日常知识集锦

childNodes.length的使用误区

在写HTML时候发现,想验证getElementsByTagName和querySelectorAll谁是返回的动态集合:
无论是使用的var ul = document.getElementsByTagName(“ul”)[0];
还是 var ul = document.querySelectorAll(“ul”)[0];
这个childNodes.length初始值都是3。
后来才发现,childNodes 拿到的是节点下的所有子节点,包括元素节点,文本节点和注释节点,一个注释,一个换行,一个使得length变成5。故此。

区分getElementsByTagName和querySelectorAll返回值

ByTagName的list是动态,受文档修改的影响,每执行一次length都会增加。

var ul = document.getElementsByTagName("ul")[0];
var list = ul.getElementsByTagName("li");
//用上述方法拿到ul下所有li节点,
//用条件语句给ul动态添加子元素
var newli = document.createElement("li");
ul.insertBefore(newli, ul.children[0]);
console.log(list.length);

相反的,SelectorAll的是静态的,不受文档变动影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值