在我們做後台刪除的時候,當點擊刪除標籤時,你希望彈出一個友好的提示框!例如這樣:
那程式碼應該怎麼寫呢?向下面這樣?
<!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方法的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!