读《DOM编程艺术》遇到的2个疑问 ?

  1.   DOM编程艺术第2版 第129页

http://img.mukewang.com/5a4d48eb0001befb08100201.jpg

对于图中这段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 真的可以用上面代码实现???

求解惑。。。 

charsandrew
浏览 892回答 1
1回答

qq_0_165

1,我试过了:两种得到的都是子节点<em>DOM</em>。反正,此处attr元素有1个子节点,是<em>元素节点,<em>又有1个子节点(文本节点DOM)。我觉得也许是书错了吧,你可以再自己试试!2,因为,lastChild得到的可能是文本节点,而不是元素节点,因此,我们要使用parentNode.getElementsByTagName('*')得到所有的后代元素节点,就将所有的后代元素节点放在quoteElements 数组里面,获取数组的最后一个元素(quoteElements[quoteElements.length - 1]),那么,得到的肯定就是最后一个元素节点啊!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript