理解JavaScriptDOM核心思想:nodeList与HtmleElement对象
我一直在努力彻底理解DOM。目前,我正在遍历DOM树,似乎发现了一些不一致之处 当我选择多个元素时,将返回节点列表 当我仅选择1个元素时,将返回HtmleElement 所以问题是,为什么这段代码会返回一个节点列表,即使我只选择了1个li 请参阅此小提琴以了解示例: 有人能给我解释清楚吗?Thx理解JavaScriptDOM核心思想:nodeList与HtmleElement对象,javascript,dom,nodelist,Javascript,Dom,Nodelist,我一直在努力彻底理解DOM。目前,我正在遍历DOM树,似乎发现了一些不一致之处 当我选择多个元素时,将返回节点列表 当我仅选择1个元素时,将返回HtmleElement 所以问题是,为什么这段代码会返回一个节点列表,即使我只选择了1个li 请参阅此小提琴以了解示例: 有人能给我解释清楚吗?Thx <ul id="jow"> <li><a href="">Item</a></li> <li><a
<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>";
}
更正:
当调用可能选择多个元素的函数时,将返回节点列表
调用最多只能选择1个元素的函数时,将返回HtmleElement
这样,您就不必在每次调用时测试返回值的类型
querySelectorAll被设计为返回未定义数量的元素,因此它返回一个节点列表
相反,当使用getElementById时,返回节点列表通常没有意义,因为一个元素最多可能有一个给定的id,这就是它直接返回一个元素或null的原因。So li[0]。parentNode;调用最多只能选择1个元素的函数?您应该将parentNode视为属性,而不是函数。是的,给定元素最多有一个父元素。