首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript innerHTML 報錯「Cannot set property of null」:getElementById 選擇器錯誤

     編輯:程式設計疑難解答

錯誤代碼

<span class="day"></span>
<script>
var oday = document.getElementById("day"); // 錯誤:查找 id="day",但元素只有 class="day"
oday.innerHTML = newday; // oday 為 null
</script>

錯誤原因

document.getElementById("day") 尋找 id="day" 的元素,但 HTML 中 <span class="day"> 只有 class 屬性,無 id 屬性。返回 null,隨後訪問 .innerHTML 拋出異常。

修正方案

方案一:添加 id 屬性(推薦)

<span id="day" class="day"></span>
<script>
var oday = document.getElementById("day"); // 正確
oday.innerHTML = newday;
</script>

方案二:使用 querySelector 選 class

<span class="day"></span>
<script>
var oday = document.querySelector(".day"); // 選第一個 class="day"
oday.innerHTML = newday;
</script>

方案三:使用 getElementsByClassName

var oday = document.getElementsByClassName("day")[0]; // 返回集合,取第一個
oday.innerHTML = newday;

最佳實踐建議

方法適用場景性能返回值
getElementById唯一標識元素最快Element / null
querySelector複雜選擇器 (class, 屬性, 後代)較慢Element / null
getElementsByClassName按 class 批量操作快HTMLCollection (即時)
querySelectorAll複雜選擇器批量較慢NodeList (靜態)

調試技巧

  1. 控制台輸入 document.getElementById("day") 直接檢查返回值。
  2. 給元素加唯一 id,優先用 getElementById。
  3. 操作前判空:if (oday) oday.innerHTML = ...。

總結

id 與 class 混淆 是新手高頻錯誤。記住:#id 唯一,.class 可重複。HTML 寫 id="day",JS 用 getElementById("day");或 HTML 寫 class="day",JS 用 querySelector(".day")。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved