//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id
function findIdList(data2, id, children = 'children', level = 0) {
var arrRes = [];
let obj = {
id: 0,
[children]: data2
}
let rev = (data, id, level) => {
if (!data || !data[children] || !data[children]length) {
return;
}
for (var i = 0; i < data[children]length; i++) {
let item = data[children][i];
if (itemid == id) {
// 将匹配到的结果保存到数组
arrResunshift({ level, activeId: itemid });
rev(obj, dataid, 0);
break;
} else if (item[children] && item[children]length > 0) {
//如果有子集,则把子集作为参数重新执行本方法
rev(item, id, level + 1);
}
}
};
rev(obj, id, level);
return arrRes;
}
let list = [
{id: 1, children: [
{id: 11, children: [{id: 12}]}
]},
{id: 2, children: [{id:21, children: [{id: 31}]}]}
]
let b = findIdList(list, 21)
consolelog(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]
<body>
<script>var a = Mathrandom()</script>
<div>
<script>
//这里的要点是需要获取到当前的script标签
//或者是这个script标签的父亲(div)
//1 直接获取到div
var all_div = documentgetElementsByTagName('div');
var div = all_div[all_divlength - 1];
divid = a;
//这个是利用了html代码加载执行时的顺序从上到下
//而在这个script里代码执行的时候恰好解析到
//最后一个div就是我们想要的div 所以直接查找所有的div
//然后取最后一个div就是这个标签的父亲(div)
//2 获取当前执行的script标签,然后取它的父亲
function getCurrentScript(){
if(documentcurrentScript){
return documentcurrentScript;
}
var scripts = documentgetElementsByTagName('script');
return scripts[scriptslength - 1];
}
var script = getCurrentScript();
var div = scriptparentNode;
divid = a;
//这个是查找当前正在执行的脚本的标签
//新版浏览器会有支撑的属性 currentScript
//旧版本的话,就只好查找所有脚本,然后返回最后一个
</script>
</div>
</body>
$('z')parent();
是这个意思不?
结果是
<div id='F'>
<p id='Z'></p>
</div>
以上就是关于JS根据子节点递归获取所有父节点的集合全部的内容,包括:JS根据子节点递归获取所有父节点的集合、javascript获取父节点问题、jquery 如何 根据子节点 获取它的父节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)