1. 程式人生 > >Cannot set property 'onclick' of null的問題——呼叫JS檔案出錯的問題

Cannot set property 'onclick' of null的問題——呼叫JS檔案出錯的問題

Cannot set property 'onclick' of null的問題 

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

今天看了一個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事件。