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

JavaScript alert 顯示 undefined:DOM 遍歷路徑錯誤排查

     編輯:程式設計綜合問答

現象

alert(this.parentNode.parentNode.firstChild.innerHTML) 彈出 undefined,預期獲取 <h3> 內容。

原因分析

undefined 意味著屬性訪問鏈中某環節為 null/undefined。常見原因:

  • firstChild 返回 **文本節點** (換行/縮進空白) 而非元素節點,文本節點無 innerHTML。
  • DOM 結構與預期不符(如多層包裹、動態生成)。
  • 事件綁定上下文 this 指向錯誤(箭頭函數/普通函數區別)。

逐步排查法

// 1. 確認 this
console.log(this); 

// 2. 確認 parentNode
console.log(this.parentNode); 

// 3. 確認 parentNode.parentNode
console.log(this.parentNode.parentNode); 

// 4. 確認 firstChild (關鍵)
console.log(this.parentNode.parentNode.firstChild); 
// 可能輸出 #text "\n    " → 無 innerHTML

// 5. 正確獲取第一個元素子節點
console.log(this.parentNode.parentNode.firstElementChild); // 推薦
// 或
console.log(this.parentNode.parentNode.children[0]);

修正代碼

// 使用 firstElementChild 獲取第一個元素節點
alert(this.parentNode.parentNode.firstElementChild.innerHTML);

// 更穩健:查找最近的 h3
alert(this.closest('tr').querySelector('h3').innerHTML);

關鍵 DOM API 對比

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
屬性/方法返回備註
firstChildNode (含文本/註釋)常為空白文本節點
firstElementChildElement**推薦**,僅元素節點
children[0]Element僅元素子節點集合
childNodes[0]Node同 firstChild
closest(selector)Element向上查找最近祖先
querySelector(selector)Element向下查找首個匹配