Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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
Javascript 如何使用';这';在queryselectorall中的选择器中_Javascript_Html_Dom - Fatal编程技术网

Javascript 如何使用';这';在queryselectorall中的选择器中

Javascript 如何使用';这';在queryselectorall中的选择器中,javascript,html,dom,Javascript,Html,Dom,是否可以在querySelectorAll()中的选择器中使用某种类型的“this” 说明:如果我使用: var _childlist = document.querySelectorAll("#treeIC > li"); 我得到了我希望在我的树的第一级的结果 但如果我使用: var _ICtree = document.getElementById("treeIC"); var _childlist = _ICtree.querySelectorAll("li"); 我把所有的李牌

是否可以在querySelectorAll()中的选择器中使用某种类型的“this”

说明:如果我使用:

var _childlist = document.querySelectorAll("#treeIC > li");
我得到了我希望在我的树的第一级的结果

但如果我使用:

var _ICtree = document.getElementById("treeIC");
var _childlist = _ICtree.querySelectorAll("li");
我把所有的李牌都挂在树下了。如果我写:

var _childlist = _ICtree.querySelectorAll("> li"); // or
var _childlist = _ICtree.querySelectorAll("this > li");
它不起作用


我需要在实现中使用递归调用,这就是我需要它的原因。我知道如何解决问题,但我想知道是否有办法在querySelectorAll()中使用“this”并编写更干净的代码。

不,不能将
this
用作
querySelectorAll()
的参数,因为它的参数是字符串。如果
是DOM元素,则可以执行
此.querySelectorAll()
操作。为什么不将节点列表转换为数组并使用
映射
forEach
?它们提供了一个
内置的.in,您可以使用
:scope
伪选择器。但它会在不支持它的浏览器上抛出一个错误。另一种选择是像
Array.prototype.filter.call(parentElement.children,function(el){return el.matches(selector)})
这样的函数,它将返回一个数组而不是一个活动节点列表。