解決Uncaught TypeError: Cannot set property 'onclick' of null錯誤的方法


問題分析:當JS文件放在head標簽里中時,並且綁定了onclick事件,就出現了這個錯誤

原因:

W3School中介紹瀏覽器先加載完按鈕節點才執行JS,當瀏覽器自頂向下解析時,找不到onclick綁定的按鈕節點了

如下面這個例子:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>事件</title> 
<script>
    var Btn = document.getElementById('btn');
    Btn.onclick = function(){    
        console.log("push the button ");        
    }
</script> 
</head> 
<body> 
   <button id="btn">計算</button> 
</body>
</html>

就會出現這個這個錯誤,如下圖:

解決辦法一:把JS內容用window.οnlοad=function(){ }包裹起來

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>事件</title>
    <script>
        window.onload = function () {
            var Btn = document.getElementById('btn');
            Btn.onclick = function () {
                console.log("push the button ");
            }
        }
    </script>
</head>
<body>
    <button id="btn">計算</button>
</body>
</html>

解決辦法二:把js文件放在底部加載

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>事件</title>
</head>
<body>
    <button id="btn">計算</button>
    <script>
        var Btn = document.getElementById('btn');
        Btn.onclick = function () {
            console.log("push the button ");
        }
    </script>
</body>
</html>


免責聲明!

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



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