轉行學開發,代碼100天。
初寫了最簡的一段Js代碼,即通過document中的innerHTML方法修改一個<p>標簽的內容,報以下錯誤。
-"Uncaught TypeError: Cannot set property 'innerHTML' of null"錯誤
代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>js-01</title>
<script type="text/javascript">
document.getElementById("pid").innerHTML = "Hello World.";
</script>
</head>
<body>
<p id ="pid">Hello</p>
</body>
</html>
解釋:錯誤原因為document中的innerHTML為空,也就是說在加載js文件時,找不到其中調用的對象即文中的<p>標簽。
因此需要將js文件引用放置到<p>標簽之后,即
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>js-01</title>
</head>
<body>
<p id ="pid">Hello</p>
<script type="text/javascript">
document.getElementById("pid").innerHTML = "Hello World.";
</script>
</body>
</html>
此時網頁輸出為:

總結:這個小問題暴露了html文件加載順序的理解問題。即html中的內容是按照HTML本身的先后順序加載的。因此在引入js時或者直接添加<script>內容時在html內容之后執行。
其他說明見 https://www.cnblogs.com/Walker-lyl/p/5262075.html