Javascript js在节点列表中查找对象?
退一步是无关紧要的。请不要图书馆 我们有一个dom对象引用,我们将调用Javascript js在节点列表中查找对象?,javascript,object,nodes,Javascript,Object,Nodes,退一步是无关紧要的。请不要图书馆 我们有一个dom对象引用,我们将调用obj。这实际上是一个事件。目标 我们有一个节点列表,我们将调用节点,这是通过querySelectorAll和变量选择器得到的 节点可以有1个或多个元素,每个元素都可以有子元素 我们需要确定obj是这些节点元素之一,还是这些节点元素的子元素。我们在这里寻找“本机”浏览器功能,我们可以为循环编写自己的,并完成这一点,我们正在寻找替代方案 比如: 节点。包含(obj)或节点。索引(obj) 涉及检索要匹配的节点列表的其他方法的解
obj
。这实际上是一个事件。目标
我们有一个节点列表,我们将调用节点
,这是通过querySelectorAll和变量选择器得到的
节点
可以有1个或多个元素,每个元素都可以有子元素
我们需要确定obj
是这些节点元素之一,还是这些节点元素的子元素。我们在这里寻找“本机”浏览器功能,我们可以为循环编写自己的,并完成这一点,我们正在寻找替代方案
比如:
节点。包含(obj)
或节点。索引(obj)
涉及检索要匹配的节点列表的其他方法的解决方案是可以接受的,但我不知道这些方法是什么 我认为没有内置的DOM方法可以实现这一点。您需要递归地遍历节点列表
,并检查是否与元素相等。另一个选项是在节点列表中的每个第一级元素上使用(例如,查找元素的id)。不过,我不确定(inn)的效率如何。我不确定这是否会在节点列表的第一级之外进行搜索,但您可以递归使用此表达式遍历它,并检查元素“obj”是否在节点列表“nodes”中
[].indexOf.call(nodes, obj)
我是这样做的:
Array.prototype.find.call(style.childNodes, function(child) {
if(child.textContent.includes(drawer.id)) {
console.log(child);
}
});
似乎有效。然后,child是另一个html节点,您可以随意操纵它 如果除了Dominic的回答作为函数:
function nodelist_contains (nodelist, obj)
{
if (-1 < Array.from (nodelist).indexOf (obj))
return true;
return false;
}
函数nodelist\u包含(nodelist,obj)
{
if(-1
是的,这也是我们当前的思想流派。嗯,有点。。。obj来自event.target,因此我们将通过父对象递归,并使用matchesSelector匹配变量选择器。我们也无法找到一个内置的方法,但我们想挑选一些伟大的人物,看看我们是否错过了。
function nodelist_contains (nodelist, obj)
{
if (-1 < Array.from (nodelist).indexOf (obj))
return true;
return false;
}