练习牛客网笔试题--前端js--2-demo节点查找

该博客探讨了如何在JavaScript中找到两个DOM节点的最近公共父节点。提供了两种不同的实现方法:一种使用循环遍历节点的父节点,另一种采用递归方式。这些方法对于前端开发中的DOM操作和理解节点关系具有实际应用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习牛客网笔试题--前端js--2-demo节点查找

// 题目描述

 // 查找两个节点的最近的一个共同父节点,可以包括节点自身

 // 输入描述:

 // oNode1 和 oNode2 在同一文档中,且不会为相同的节点

 

1.自己的练习

 function commonParentNode(oNode1, oNode2) {
            oNode1 = oNode1 || document.querySelector('#oNode1');
            oNode2 = oNode2 || document.querySelector('#oNode2');
            var parent1 = oNode1.parentNode;
            var parent2 = oNode2.parentNode;
            // 数组Node保存节点的父节点
            var Node = {
                oNode1: [oNode1],
                oNode2: [oNode2]
            };
            // 循环 将node1的父节点都push到数组中
            while (parent1) {
                Node.oNode1.push(parent1);
                var parent1 = parent1.parentNode;
            }
            while (parent2) {
                Node.oNode2.push(parent2);
                var parent2 = parent2.parentNode;
            }
            // 遍历匹配
            for (var i = 0; i < Node.oNode1.length; i++) {
                var result = Node.oNode2.find(item => item === Node.oNode1[i]);
                if (result) {
                    return result;
                }
            }
        }

2.题解

function commonParentNode(oNode1, oNode2) {
            let parent1 = oNode1.parentNode; 
            let parent2 = oNode1.parentNode;
            if (parent1 === parent2) {
                return parent1
            } else {
                commonParentNode(parent1, parent2)
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值