JS事件報錯之Cannot set property 'onclick' of null


<!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內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM