Javascript js在节点列表中查找对象?

Javascript js在节点列表中查找对象?,javascript,object,nodes,Javascript,Object,Nodes,退一步是无关紧要的。请不要图书馆 我们有一个dom对象引用,我们将调用obj。这实际上是一个事件。目标 我们有一个节点列表,我们将调用节点,这是通过querySelectorAll和变量选择器得到的 节点可以有1个或多个元素,每个元素都可以有子元素 我们需要确定obj是这些节点元素之一,还是这些节点元素的子元素。我们在这里寻找“本机”浏览器功能,我们可以为循环编写自己的,并完成这一点,我们正在寻找替代方案 比如: 节点。包含(obj)或节点。索引(obj) 涉及检索要匹配的节点列表的其他方法的解

退一步是无关紧要的。请不要图书馆

我们有一个dom对象引用,我们将调用
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;
}