Javascript 如何在节点中获取节点

Javascript 如何在节点中获取节点,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,假设我有一个名为myNode的变量: myNode=document.getElementsByTagName('li')[0]; 下面是myNode.outerHTML的外观: 我的部门 我的标题 我需要访问以开头的div,但由于这个div没有ID。我想我需要遍历myNode元素来找到它并单击它 所以我试了一下: for(var i=0;i如果使用,可以通过属性选择元素 document.querySelector('li div[aria disabled=“false”]”) 如

假设我有一个名为
myNode
的变量:

myNode=document.getElementsByTagName('li')[0];
下面是myNode.outerHTML的外观:

  • 我的部门 我的标题
  • 我需要访问以
    开头的div,但由于这个div没有ID。我想我需要遍历
    myNode
    元素来找到它并单击它

    所以我试了一下:

    for(var i=0;i如果使用,可以通过属性选择元素

    document.querySelector('li div[aria disabled=“false”]”)
    
    如果类不会更改,则可以增加选择器的值。如果
    myNode
    li
    (列表项)的列表,则可以从该节点在所需索引处进行查询

    myNode[i].查询选择器('.\u 4ofi.\u 4ofr div[aria disabled=“false”]”)
    

    此外,您可以迭代结果集以提高可读性

    myNodes.forEach(node=>myNode.querySelector('div[aria disabled=“false”]);
    
    其中
    myNodes
    li
    元素的集合。

    如果使用,可以通过属性选择元素

    document.querySelector('li div[aria disabled=“false”]”)
    
    如果类不会更改,则可以增加选择器的值。如果
    myNode
    li
    (列表项)的列表,则可以从该节点在所需索引处进行查询

    myNode[i].查询选择器('.\u 4ofi.\u 4ofr div[aria disabled=“false”]”)
    

    此外,您可以迭代结果集以提高可读性

    myNodes.forEach(node=>myNode.querySelector('div[aria disabled=“false”]);
    

    其中
    myNodes
    li
    元素的集合。

    我假设您无法修改DOM。否则,只需为要访问的元素设置一个id,然后使用

    document.getElementById('myId')
    
    如果无法触摸DOM:

    • myNode.length
      返回
      undefined
      ,因为返回值不是数组。它是一个对象。您可以通过调用

      myNode.childNodes

    • 对于具有“aria检查”的特定节点,您可以通过以下方式直接访问:

       document.getElementsByTagName('li')[0].childNodes[1].childNodes[3].childNodes[1]
      

    我不知道为什么有人想用这种方式访问节点,但你可以这样做。

    我假设你不能修改DOM。否则,只需为你想访问的元素设置一个id,然后使用

    document.getElementById('myId')
    
    var myNode = document.getElementsByTagName('li');
    
    for (var i=0;i<myNode.length;i++) {
      console.log(myNode[i].querySelector('._4ofr div[aria-disabled="false"]'));
    };
    
    如果无法触摸DOM:

    • myNode.length
      返回
      undefined
      ,因为返回值不是数组。它是一个对象。您可以通过调用

      myNode.childNodes

    • 对于具有“aria检查”的特定节点,您可以通过以下方式直接访问:

       document.getElementsByTagName('li')[0].childNodes[1].childNodes[3].childNodes[1]
      
    不确定为什么有人希望以这种方式访问节点,但这就是问题所在。

    var myNode=document.getElementsByTagName('li');
    var myNode = document.getElementsByTagName('li');
    
    for (var i=0;i<myNode.length;i++) {
      console.log(myNode[i].querySelector('._4ofr div[aria-disabled="false"]'));
    };
    
    对于(var i=0;i
    var myNode=document.getElementsByTagName('li');
    
    对于(var i=0;iYes但当我已经有myNode变量时,我如何在其中搜索而不是在所有文档中搜索?@delphirules您可以从文档中的任何元素开始。是的,但当我已经有myNode变量时,我如何在其中搜索而不是在所有文档中搜索?@delphirules您可以从文档中的任何元素开始搜索。谢谢,这是关闭,但在本例中,我现在知道childNodes是什么。如果我不知道,我如何在myNode中的所有子节点中进行迭代?@delphirules您可以迭代通过
    childNodes
    返回的值。它是一个
    NodeList
    ,因此就像一个数组一样,您可以对它进行迭代,并使用
    .length
    请求其大小,谢谢,这很接近,但在本例中,我现在知道childNodes将是什么。如果我不知道,我如何在myNode中的所有子节点中进行迭代?@delphirules您可以迭代通过
    childNodes
    返回的值。它是一个
    节点列表
    ,因此就像一个数组一样,您可以对其进行迭代,并使用
    .length
    请求其大小>