JavaScript 本身是不支持这种查找的, 因为"子对象"只是父对象中的一个引用, 它也可以被其它对象引用, 这样一个"子对象"就可能有多个"父对象". 能实现的是在代码运行中获取它的上级对象.
var Obj = function(){
this.child = {
parent: {},
get_parent: function()
{
return this.parent
}
}
this.init = function()
{
this.child.parent = this
}
this.init()
}
var o = new Obj
console.log(o.child.get_parent())
//传入参数:需要遍历的对象,需要匹配的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 (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 } ]
html代码:<div id="test">
<div></div>
<div></div>
</div>
js代码:
<script>
function dom() {
var s= document.getElementById("test")
del_ff(s) //清理空格
var chils= s.childNodes //得到s的全部子节点
var par=s.parentNode //得到s的父节点
var fc=s.firstChild //获得s的第一个子节点
var lc=s.lastChile //获得s的最后一个子节点
}
</script>
建议:使用jquery来获取父级节点跟子级节点会更方便。