关于a标签不能调用js方法的小细节,你注意到了么?
在我們做后臺(tái)刪除的時(shí)候,當(dāng)點(diǎn)擊刪除標(biāo)簽時(shí),你希望彈出一個(gè)友好的提示框!比如這樣:
那代碼應(yīng)該怎樣寫呢?向下面這樣?
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><script>window.οnlοad=function () {function confirmdelete(id) {return window.confirm("你確定要?jiǎng)h除嗎?");}}</script> </head> <body></body> <?phpecho "<a οnclick='confirmdelete(2)'>刪除</a>"; ?>你會(huì)發(fā)現(xiàn)會(huì)發(fā)生這樣一個(gè)錯(cuò)誤:
該函數(shù)沒有被使用?不應(yīng)該啊,我在php里面不是已經(jīng)調(diào)用了么?
注意:
想必寫過前端的人都知道這個(gè)方法是在頁面全部加載完成之后執(zhí)行,那么問題就來了,php的執(zhí)行順序是先于js的,所以當(dāng)執(zhí)行php的時(shí)候,發(fā)現(xiàn)a標(biāo)簽里面的方法并不存在,因?yàn)榇丝蘪s還沒有被執(zhí)行,所以就導(dǎo)致了php a標(biāo)簽調(diào)用js的時(shí)候沒有反應(yīng)這種情況了。
那么代碼變成這樣呢?
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><script>function confirmdelete(id) {return window.confirm("你確定要?jiǎng)h除嗎?");}</script> </head> <body></body> <?phpecho "<a οnclick='return confirmdelete(2)'>刪除</a>"; ?>結(jié)果是成功執(zhí)行!有人說不對(duì)啊,你不是說php的執(zhí)行順序要先于js么,這個(gè)和上面沒什么區(qū)別啊。
那么此刻就要注意了,有了window.onload這個(gè)方法約束后,該js是最后執(zhí)行,那么 當(dāng)去掉這個(gè)約束,你會(huì)發(fā)現(xiàn)這個(gè)函數(shù)
?
只是一個(gè)聲明,在js當(dāng)中,對(duì)于只是聲明的函數(shù),它會(huì)最先編譯,所以這時(shí)候當(dāng)執(zhí)行到php的a標(biāo)簽時(shí),因?yàn)樗{(diào)用的函數(shù)已經(jīng)預(yù)先編譯好了,所以就能夠調(diào)用。
?
轉(zhuǎn)載于:https://www.cnblogs.com/hzStudy/p/7224086.html
總結(jié)
以上是生活随笔為你收集整理的关于a标签不能调用js方法的小细节,你注意到了么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go语言内存对齐详解
- 下一篇: 怎么删除映射网络里的计算机,W7怎么样删