html文档怎么区分节点,怎么在有十万个节点的html文档中找到特定的某个节点

我的思路是用css的nth-child()选择器做筛选。

target

// js部分

function isString (target) {

return typeof target === 'string';

}

function findNode (parent, child) {

if (!(isString(parent) && isString(child))) {

return;

}

const path = child.split('.');

let str = `${parent}>*`;

for (let i = 0, len = path.length; i < len; i++) {

str += `:nth-child(${path[i]})${i === len - 1 ? '' : '>*'}`;

}

//body>*:nth-child(1)>*:nth-child(2)>*:nth-child(2)>*:nth-child(1)>*:nth-

//child(2)>*:nth-child(1)>*:nth-child(1)>*:nth-child(2)>*:nth-child(2)>*:nth-

//child(1)>*:nth-child(2)>*:nth-child(1)

console.log(str);

return document.querySelector(str);

}

console.log(findNode('body', '1.2.2.1.2.1.1.2.2.1.2.1')); //

target

这肯定不是最好的解法,因为还是需要做遍历,如果目标节点的位置嵌套过深,例如上万的嵌套,那么按上面那样逐个输入位置就肯定不行了,同时性能估计也很差。

感觉楼上说的二叉树遍历比较接近题目的要求,算法方面我自己也不是很熟,只能想到这个方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值