music.lastChild 得到的不是最后一个.music_play标签是什么原因?
lastChild
不一定能返回最后一个元素(element),你应该用lastElementChild
。
原因是DOM里面有node的概念,元素(element)是node的一种,还有其他的node type:
<div>
text1
<h4>h4 title</h4>
text2
<p>this is a paragraph</p>
</div>
以上的text1, text2甚至是</p>
和</div>
之间的换行符都是单独的node。你可以通过div元素的childNodes
属性来查看。
你这里的lastChild获取的就是</div>前的一个text node,内容是换行。知道了原因后,那么lastChild什么样才能返回music_play呢?
<div class="music">
<img src="...">
<img src="..." class="music_play"></div>
这样就可以了
你可以先看看 lastChild
和 lastElementChild
的区别,应该就能得到想要的东西了。
至于你现在得到的是什么,你可以看看 https://www.w3.org/TR/CSS2/visuren.html 里面的 Anonymous box
。
Node 与 Element。Element是Node的子集。