標籤:情況 好的 載入 存在 cli 約束 har 結果 charset
在我們做後台刪除的時候,當點擊刪除標籤時,你希望彈出一個友好的提示框!比如這樣:
那代碼應該怎樣寫呢?向下面這樣?
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script> window.onload=function () { function confirmdelete(id) { return window.confirm("你確定要刪除嗎?"); } } </script></head><body></body><?php echo "<a onclick=‘confirmdelete(2)‘>刪除</a>";?>
你會發現會發生這樣一個錯誤:
該函數沒有被使用?不應該啊,我在php裡面不是已經調用了嗎?
注意:
想必寫過前端的人都知道這個方法是在頁面全部載入完成之後執行,那麼問題就來了,php的執行順序是先於js的,所以當執行php的時候,發現a標籤裡面的方法並不存在,因為此刻js還沒有被執行,所以就導致了php a標籤調用js的時候沒有反應這種情況了。
那麼代碼變成這樣呢?
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script> function confirmdelete(id) { return window.confirm("你確定要刪除嗎?"); } </script></head><body></body><?php echo "<a onclick=‘return confirmdelete(2)‘>刪除</a>";?>
結果是成功執行!有人說不對啊,你不是說php的執行順序要先於js麼,這個和上面沒什麼區別啊。
那麼此刻就要注意了,有了window.onload這個方法約束後,該js是最後執行,那麼 當去掉這個約束,你會發現這個函數
只是一個聲明,在js當中,對於只是聲明的函數,它會最先編譯,所以這時候當執行到php的a標籤時,因為它要調用的函數已經預先編譯好了,所以就能夠調用。
關於a標籤不能調用js方法的小細節,你注意到了嗎?