html 两个元素的最近的公共父元素

根据id查找,两个元素的最近的公共父元素

这里可以运用算法  160. 相交链表

<!DOCTYPEhtml>
  <htmllang="en">

    <head>
      <metacharset="UTF-8">
        <metahttp-equiv="X-UA-Compatible"content="IE=edge">
          <metaname="viewport"content="width=device-width, initial-scale=1.0">
            <title>Document</title>
    </head>

    <body>
      <div>
        <div></div>
        <div>
          <div></div>
          <div>
            <div id="a">
          </div>
          <div></div>
        </div>
        <div id="b">
      </div>
      </div>
      </div>
      <div></div>
    </body>
    <script>
      // function findNearestCommonParentNode(elementNode1, elementNode2){
      //   // code
      //   let id1 = elementNode1.id
      //   let id2 = elementNode2.id
      //   let find1 = elementNode1.querySelector('#'+id2)
      //   let find2 = elementNode2.querySelector('#'+id1)
      //   if(find1){
      //     return elementNode1
      //   }else if(find2){
      //     return elementNode2
      //   }
      //   let parent = elementNode1.parentElement
      //   while(!parent.querySelector('#'+id2)){
      //     parent = parent.parentElement
      //   }
      //   return parent
      // }
      function findNearestCommonParentNode(elementNode1, elementNode2){
        let node1 = elementNode1
        let node2 = elementNode2
        
        while(node1 != node2){
          node1 = (node1.parentElement.tagName.toLowerCase() === 'body') ? elementNode2 : node1.parentElement
          node2 = (node2.parentElement.tagName.toLowerCase() === 'body') ? elementNode1 : node2.parentElement
        }
        return node1
      }
      console.log(findNearestCommonParentNode(document.querySelector('#a'), document.querySelector('#b')));
    </script>

    </html>
posted @ 2021-08-12 17:54  尖子  阅读(82)  评论(0编辑  收藏  举报