根据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>