javascript - 在 JavaScript 中寻找具有特定深度的元素

标签 javascript

我需要在没有框架的情况下用纯 JavaScript 编写一个函数来获取所有特定标签,但只能从父级下的第一级获取。

例如:我需要首先调用一些函数<ul>并获取所有 <li>从它的第一层开始( <li> 带有文本 1.2 和 <li> 带有文本 2.1)

<div id="sideNavigation">
    <ul>
       <li class=" act open  "> 
          1.2
          <ul>
             <li class="  ">
                1.2
                <ul>
                   <li class="  ">
                      1.3
                      <ul>
                         <li class="  ">1.4</li>
                      </ul>
                   </li>
                </ul>
             </li>
          </ul>
       </li>
       <li class="  ">
          2.1
          <ul>
             <li class="  ">2.2.1</li>
             <li class="  ">2.2.2</li>
             <li class="  ">2.2.3</li>
          </ul>
       </li>
    </ul>
</div>

我一直在尝试这样做:

var allLi = document.getElementById("sideNavigation").getElementsByTagName("li"); 

但它返回所有<li>在这个 div 中不仅是第一级 <li> 。你有什么快速的方法来解决我的问题还是我必须实现一个新的函数来检测节点的深度

最佳答案

你可以使用属性.children来获取那些“li”

var firstDepthLi = document.getElementById("sideNavigation").children[0].children;

如果你想要一个通用函数,你可以创建类似的东西:

var getElementsByDepth = function(el, tagname, depth) {
       var children = el.children;
       var res = new Array();
       for(var i=0; i<children.length; i++) {
          if (children[i].tagName == tagname) {
             res.push(children[i]);
             if (depth > 0)
                 res.concat(getElementsByDepth(children[i], tagname, depth-1));
          }
       }
       return res;
}

关于javascript - 在 JavaScript 中寻找具有特定深度的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004436/

相关文章:

javascript - 如何使用 OnClick 更改图像?

javascript - PouchDB 的外部访问,同步时出错

javascript - 使用替代 promise 时如何解决 ajax 调用中的错误

javascript - VueJS : Failed To Mount Component

Javascript 数组、图像链接、链接

javascript - window.setinterval 不适用于我的 chrome 扩展

javascript - 如何通过身份验证正确调用此 API? [ python /JSON]

javascript - 使用 Spring Security 为非授权用户隐藏数据表中的按钮

javascript - 如何知道 "a"标签被点击了? AngularJs 方式

javascript - Django-storage - 如何在上传之前检查文件大小?