当前位置: 首页 > Web前端 > HTML

小心,querySelector前面10米有个坑

时间:2023-04-02 13:53:04 HTML

我在写小群的时候用了document.querySelector。被小伙伴提醒说可能有坑。它是什么?先来个MDN文档解决贪心:pokemepokemepokeme>>>>>>>>NodeList翻译主体部分:对于现代浏览器来说,NodeList虽然不是Array,但是它是可枚举的,所以可以直接使用forEach和其他方法;对于一些老浏览器,可以使用Array.from或者Array.prototype.forEach将NodeList转为数组,然后使用forEach等方法;在某些情况下,NodeList是实时的(实时更改),但有时不是。``比如用document.getElementById获取元素的childNodes,那么这个collection就活了。但是,通过document.querySelectorAll()获得的集合不是实时的。这个live到底是什么意思?意思是如果你预先得到一个集合,保存在一个变量A中,当对这个集合进行增删改等操作时,如果变量A能够实时反映你的增删改查操作,则表示集合是实时的,反之亦然。``“坑”是文档没有解释清楚NodeList在使用querySelector后什么时候是live,什么时候NodeList不是live。于是大佬们开始实验,大致发现如果一个节点被删除了,它就是活的;如果添加了一个节点,它就不是活的。朋友们也可以自己做实验。如果大家有什么新的发现,欢迎评论留言哦~另外值得注意的是:关于HTMLCollection和NodeList。一般来说,从MDN文档来看,所有的集合都可以称为NodeList,但是需要注意以下几点: