我一直在努力全面了解DOM。目前,我正在逐步了解遍历DOM树,并且似乎发现了一些不一致之处。
此外,在这个示例中,如果我移除一个包含类“active”的li元素,它仍然会返回一个节点列表而不是单个的HTMLElement:jsfiddle.net/AmhVk/5。
- 在nodeList上,我可以使用索引来迭代列表
- 在HTMLElement上,我不能使用索引
请参见此fiddle示例:http://jsfiddle.net/AmhVk/4/
所以问题是,为什么nodeList有可索引的element[0]、element1,而HTMLElement没有呢?
能否有人向我详细解释一下?谢谢...
<ul id="jow">
<li><a href="">Item</a></li>
<li><a href="">Item</a></li>
<li class="active"><a href="">Item</a></li>
<li class="active"><a href="">Item</a></li>
<li><a href="">Item</a></li>
<li><a href="">Item</a></li>
</ul>
<div id="ieps"></div>
function simple(){
var li = document.querySelectorAll(".active");
var ul = li[0].parentNode;
var getULchild = ul.children[0];
var ieps = document.getElementById("ieps");
ieps.innerHTML += "ul will return = " + ul + "<br>";
ieps.innerHTML += "li will return = " + li + "<br><br>";
ieps.innerHTML += "ul[0] will return: " + ul[0] + "<br>";
ieps.innerHTML += "li[0] will return: " + li[0] + "<br><br>";
}
此外,在这个示例中,如果我移除一个包含类“active”的li元素,它仍然会返回一个节点列表而不是单个的HTMLElement:jsfiddle.net/AmhVk/5。
NodeList
是一个类似于数组的 类,它持有HTMLElement
,而HTMLElement
只是单个节点,而不是列表。 - Niccolò CampolungoNodeList
是一种类似数组的对象,它包含一些节点。而HTMLElement
则是元素本身;它是一个只包含自身元素且值为该元素的对象。在其上尝试使用类似数组的索引就像尝试执行document.querySelectorAll(".active")[0][0];
一样。 - Joe Simmons