我一直在努力深入理解DOM。目前我正在通过遍历DOM树的方式,我似乎发现了一些不一致。
所以问题是,为什么这段代码会返回 nodeList ,即使我只选择1 li。
请参阅此小提琴以获取示例:http://jsfiddle.net/AmhVk/5
有人可以非常透彻地向我解释这个吗? THX ...
<ul id="jow">
<li><a href="">Item</a></li>
<li><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>";
}
答案 0 :(得分:2)
更正:
这样您就不必在每次调用时测试返回值的类型。
querySelectorAll
旨在返回未定义数量的元素,因此返回nodeList
。
相反,当你使用getElementById
时返回一个nodeList一般没有意义(因为一个元素最多可能有一个给定的id),这就是它直接返回一个元素(或null)的原因。