轉載自: 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事件。
