alert(this.parentNode.parentNode.firstChild.innerHTML) 彈出 undefined,預期獲取 <h3> 內容。
undefined 意味著屬性訪問鏈中某環節為 null/undefined。常見原因:
firstChild 返回 **文本節點** (換行/縮進空白) 而非元素節點,文本節點無 innerHTML。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);
| 屬性/方法 | 返回 | 備註 |
|---|---|---|
| firstChild | Node (含文本/註釋) | 常為空白文本節點 |
| firstElementChild | Element | **推薦**,僅元素節點 |
| children[0] | Element | 僅元素子節點集合 |
| childNodes[0] | Node | 同 firstChild |
| closest(selector) | Element | 向上查找最近祖先 |
| querySelector(selector) | Element | 向下查找首個匹配 |