Cannot set property 'onclick' of null的問題


轉載自: https://my.oschina.net/ximidao/blog/351017

 

摘要: 測試點擊事件的時候瀏覽器報錯,提示Uncaught TypeError: Cannot set property 'onclick' of null

今天看了一個W3School JS點擊事件的測試案例,詳情頁:http://www.w3school.com.cn/tiy/t.asp?f=js_dom_event_onclick4,其代碼為:

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<p>點擊按鈕就可以執行 <em>displayDate()</em> 函數。</p>

<button id="myBtn">點擊這里</button>

<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>

<p id="demo"></p>

</body>
</html>

點擊效果正常,而我平時測試代碼的時候一般習慣把JS代碼寫在head標簽里面,上述的代碼如果將JS代碼移到head標簽,瀏覽器就會報錯,提示:Uncaught TypeError: Cannot set property 'onclick' of null。

分析了一下代碼,W3School的寫法是瀏覽器先加載完按鈕節點才執行的JS,因此我將代碼改為:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
window.onload=function(){
document.getElementById("myBtn").onclick=function(){displayDate()};
function displayDate(){
document.getElementById("demo").innerHTML=Date();
}
}

</script>
</head>
<body>

<p>點擊按鈕就可以執行 <em>displayDate()</em> 函數。</p> <button id="myBtn">點擊這里</button>

<p id="demo"></p>


</body>
</html>

測試通過,說明節點需要先加載完才能執行onclick事件。


免責聲明!

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



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