在寫JS代碼中的綁定事件時(將JS與HTML標籤分開時),發現會有如下錯誤提示:
Uncaught TypeError: Cannot set property 'onclick' of null
代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
document.getElementById("btn").onclick=function(){
document.getElementById("p1").innerHTML="慢慢來!";
}
</script>
</head>
<body>
<p id="p1">我叫小芳芳,今天我有認真學習哦!</p>
<input type="button" id="btn" value="click me!">
</body>
</html>
對此有兩個解決的辦法
1.將JS標籤放到<input>標籤下方
2.將代碼修改爲:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload=function(){
document.getElementById("btn").onclick=function(){
document.getElementById("p1").innerHTML="慢慢來!";
}
}
</script>
</head>
<body>
<p id="p1">我叫小芳芳,今天我有認真學習哦!</p>
<input type="button" id="btn" value="click me!">
</body>
</html>
這是因爲瀏覽器在獲取到服務器返回的代碼時是按照順序執行的,所以如果html的dom樹還沒有完全生成,你執行js的時候,就會出現無法讀取到某些元素的情況,這樣js代碼也就無法執行了!