js里面的父节点作用

JavaScript09

js里面的父节点作用,第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

//传入参数:需要遍历的对象,需要匹配的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 } ]

先获取父节点: var parentEle=ele.parentNode

在获取父节点的兄弟节点:var parentEle1=parentEle.previousSbiling//上一个节点

某个子节点:var obj=parentEle1.firstChild//第一个子节点

jQuery也有相应的方法。