在JavaScript中查找具有特定深度的元素
我需要在纯JavaScript中编写一个函数,没有框架来获取所有特定的标记,但只能从父级下的第一级获取 例如:我需要在第一个在JavaScript中查找具有特定深度的元素,javascript,Javascript,我需要在纯JavaScript中编写一个函数,没有框架来获取所有特定的标记,但只能从父级下的第一级获取 例如:我需要在第一个上调用某个函数,并从它的第一级获取所有(文本1.2和文本2.1) 但是它返回这个div中的所有,而不仅仅是第一级。你有什么快速的方法来解决我的问题吗?或者我必须实现一个新的函数来检测节点的深度吗?你可以使用attribute.children来获取那些“li” 如果您想要一个通用函数,可以创建如下内容: var getElementsByDepth = function(e
上调用某个函数,并从它的第一级获取所有
(文本1.2和文本2.1)
但是它返回这个div中的所有
,而不仅仅是第一级
。你有什么快速的方法来解决我的问题吗?或者我必须实现一个新的函数来检测节点的深度吗?你可以使用attribute.children来获取那些“li”
如果您想要一个通用函数,可以创建如下内容:
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;
}
var getElementsByDepth=函数(el,标记名,深度){
var children=el.children;
var res=新数组();
对于(变量i=0;i 0)
res.concat(getElementsByDepth(子类[i],标记名,深度-1));
}
}
返回res;
}
试试:
这将返回页面上所有li
元素中的第一个li
元素。将末尾的零更改为不同的数字以获得不同的元素。您甚至可以为该值设置一个变量:
var liNum = 0;
var allLi = document.getElementById("sideNavigation").getElementsByTagName("li")[liNum];
在函数中:
函数getLi(深度){
var specificLi=document.getElementById(“侧导航”).getElementsByTagName(“li”)[depth];
回程时间;
}
var firstLi=getLi(0);
console.log(firstLi)代码>
- 第一个列表标签
- 第二个列表标签
- 第三个列表标签
看一看:是的,可能会有帮助。谢谢。document.queryselectoral('sideNavigation>ul>li')
我认为您最好使用.childNodes
而不是.childrends
,因为前者具有更好的浏览器支持。您只需进行简单的替换,无需更改任何代码。还应注意标记名参数必须全部为大写,如。标记名对于HTML总是以大写返回。(或者可以在代码中使用.toUpperCase()
)。
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;
}
var allLi = document.getElementById("sideNavigation").getElementsByTagName("li")[0];
var liNum = 0;
var allLi = document.getElementById("sideNavigation").getElementsByTagName("li")[liNum];