亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀《DOM編程藝術》遇到的2個疑問 ?

讀《DOM編程藝術》遇到的2個疑問 ?

charsandrew 2018-01-04 05:39:05
? DOM編程藝術第2版 第129頁對于圖中這段html代碼:<abbr?title="Document?Object?Model"><em>DOM</em></abbr>使用firstChild屬性和lastChild屬性取得的不都是em元素節點嗎?為什么我覺得二者這里效果沒有差別呢?2.? DOM編程藝術 第140頁書中說由于lastChild得到的節點可能不是一個元素節點, 為了實現得到最后一個元素節點lastElementChild的效果,使用了下面的代碼:var?quoteElements?=?parentNode.getElementsByTagName('*'); var?elem?=?quoteElements[quoteElements.length?-?1];得到的 elem 就是父節點的最后一個元素節點。?可是我覺的無論lastChild 還是 lastElementChild 都指的是父節點的兒子節點吧,使用getElementsByTagName('*')不是將所有后代元素節點都列出來了嗎?lastElementChild 真的可以用上面代碼實現???求解惑。。。?
查看完整描述

1 回答

?
qq_0_165

TA貢獻1條經驗 獲得超0個贊

1,我試過了:兩種得到的都是子節點<em>DOM</em>。反正,此處attr元素有1個子節點,是<em>元素節點,<em>又有1個子節點(文本節點DOM)。我覺得也許是書錯了吧,你可以再自己試試!

2,因為,lastChild得到的可能是文本節點,而不是元素節點,因此,我們要使用parentNode.getElementsByTagName('*')得到所有的后代元素節點,就將所有的后代元素節點放在quoteElements 數組里面,獲取數組的最后一個元素(quoteElements[quoteElements.length?-?1]),那么,得到的肯定就是最后一個元素節點??!

查看完整回答
反對 回復 2018-01-04
  • charsandrew
    charsandrew
    1. 是abbr元素 2. 抱歉問題沒說清楚, 我想表達的是使用getElementsByTagName('*')得到的是父節點的所有子孫節點(兒子及所有后代節點), 而lastChild 或者 lastElementChild 無論如何得到的只是兒子節點呀。 比如:<div id="div"><p>this is<span>span.</span></p></div> 這段html, div的lastChild是p元素節點, 而使用上面的方法得到的是span元素節點。
  • qq_0_165
    qq_0_165
    你的理解沒有問題,如果要找最后一個孩子節點確實不能使getElementsByTagName('*')這種方式!它會找出所有的后代元素,那么?。?!應該只能使用lastChild吧!不好意思,我也不能解決你的問題,不太理解書上那兩句話的意思!
  • charsandrew
    charsandrew
    謝謝回答,之前糾結的點就是到底是書上的問題還是我理解的問題。 另外HTML5有個lastElementChild屬性。 https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/lastElementChild
點擊展開后面1
  • 1 回答
  • 0 關注
  • 924 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號