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 (item.id == id) {
// 将匹配到的结果保存到数组
arrRes.unshift({ level, activeId: item.id })
// 递归它的父级
rev(obj, data.id, 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)
console.log(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]
js找一个子元素的父元素:
<!DOCTYPE html><html><head>
<meta charset="utf-8">
</title> <script type="text/javascript"> function deleteElement(Obj)
{ Obj.parentNode.parentNode.removeChild(Obj.parentNode) } </script></head>
<body> <ul class="list2" ><li ><img alt="" src="1.jpg" /><div>mingzi1</div>
<a onclick="deleteElement(this)">删除</a></li><li ><img alt="" src="2.jpg" />
<div>mingzi2</div><a onclick="deleteElement(this)">删除</a></li><li >
<img alt="" src="3.jpg" /><div>mingzi3</div><a onclick="deleteElement(this)">删除</a>
</li></ul></body></html>
拓展资料删除一个父元素下面的所有子元素:
document.getElementById("ok").innerHTML = ""
删除其中的一个:
document.getElementById("ok").remove(document.getElementById("ok").children(i))
//删除id为"ok"下的第i-1个子元素
首先,父节点是相对于HTML文档的DOM树而言的。如下面的HTML:
<html><head></head>
<body>
<div id="id1">
<div id="id2">
</div>
</div>
</body>
</html>
在这个HTML的DOM树里面,id2这个div节点的父节点是id1这个div,页id1这个div的父节点是body。
一般来说,每个元素都有一个父节点,有0到多个子节点。
而Javascript中,修改一个DOM节点的外观,是通过修改这个DOM节点对象的属性来实现的。
例如:
var div2 = document.getElementById('id2')// 取id=id2这个节点
var div1 = div2.parentNode// div2的父节点,也就是id1这个div节点。
div1.style.border = '1px solid red'// 把div1的边框设置为1像素实线红边框
所以,应该是通过修改某对象本身的属性来实现这个对象外观的设置(并非通过修改子节点的属性,如xxx.parentNode.style.display = 'block'只是通过xxx.parentNode来引用到xxx父节点,最终修改的是父节点的属性,跟xxx没啥关系)
获取目标元素的方法很多,例如取子节点:div1.childNodes,(取div1的子节点列表)
关于HTML及Javascript的学习,网上有很多资料,可以看一下。例如:
W3School: http://www.w3school.com.cn/html/index.asp