<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> //根據id屬性的值從文檔中獲取這個元素 var btnObj=document.getElementById("btn"); //為當前的這個按鈕元素(對象),注冊點擊事件,添加事件處理函數 (匿名函數) btnObj.onclick=function(){ //響應做的事情 alert("jaja"); }; </script> </head> <body> <input type="button" value="顯示效果" id="btn" /> </body> </html>
上面代碼執行后,顯示
進行更改,需要把js文件放在底部加載:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input type="button" value="顯示效果" id="btn" /> <script> //根據id屬性的值從文檔中獲取這個元素 var btnObj=document.getElementById("btn"); //為當前的這個按鈕元素(對象),注冊點擊事件,添加事件處理函數 (匿名函數) btnObj.onclick=function(){ //響應做的事情 alert("jaja"); }; </script> </body> </html>
代碼正常執行
原因:當js文件放在head里面時,如果綁定了onclick或者onmouseover事件,就會出現如上圖類似的錯誤,是因為瀏覽器的加載你寫的html文檔的順序是從上往下,加載完按鈕節點才執行的js,所以當瀏覽器自頂向下解析時,找不到onclick綁定的按鈕節點,於是報錯。
解決辦法:第一,把js文件放在底部加載;第二,使用window.onload=function(){}包裹js內容。