Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解JavaScriptDOM核心思想:nodeList与HtmleElement对象_Javascript_Dom_Nodelist - Fatal编程技术网

理解JavaScriptDOM核心思想:nodeList与HtmleElement对象

理解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

我一直在努力彻底理解DOM。目前,我正在遍历DOM树,似乎发现了一些不一致之处

当我选择多个元素时,将返回节点列表 当我仅选择1个元素时,将返回HtmleElement 所以问题是,为什么这段代码会返回一个节点列表,即使我只选择了1个li

请参阅此小提琴以了解示例:

有人能给我解释清楚吗?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>";

}
更正:

当调用可能选择多个元素的函数时,将返回节点列表 调用最多只能选择1个元素的函数时,将返回HtmleElement 这样,您就不必在每次调用时测试返回值的类型

querySelectorAll被设计为返回未定义数量的元素,因此它返回一个节点列表


相反,当使用getElementById时,返回节点列表通常没有意义,因为一个元素最多可能有一个给定的id,这就是它直接返回一个元素或null的原因。

So li[0]。parentNode;调用最多只能选择1个元素的函数?您应该将parentNode视为属性,而不是函数。是的,给定元素最多有一个父元素。