这个区别我估计大神都不知道,问题源于博主,细节被一个妹子发现的
事情经过是这样
<ul> <li>item</li> <li></li> <li></li> <li>item</li> <li>item</li> </ul>
第一阶段
//本人折腾了一个循环 var alis = document.getElementTagName('li') for(var i = 0 ;i < alis.length ; i++ ){ if(alis[i].innerHtml ==""){ alis[i].parentNode.removeChild( alis[i] ) } }
- 一眼看上,呢吗还用想码,——一个大大的 3
- 答案一运行结果页面出现四个 li
这是为什么呢---因为每次for循环alis.length 是一个动态:这一点很多人都知道 只不过第一眼看过忽略了。所以心里稳妥妥的---答案立马变成了4
第二阶段:事情的高潮阶段
本人以高心,就开始四处扩散谣言,结果这时妹子,写了个demo,一巴掌大我脸上 -- 蒸腾
var alis = document.querySelectorAll('li') for(var i = 0 ;i < alis.length ; i++ ){ if(alis[i].innerHtml ==""){ alis[i].parentNode.removeChild( alis[i] ) } } //直接上结果了-----3
第三阶段:我瞬间林乱了,这时什么鬼
- 。。。。。。。 一万只神兽飞过。。。。。。。
本剧终
-
querySelectorAll 得到是一个数组 -nodelist
-
getElementTagName得到是一个伪数组 –dom的结合
-
至于以上为什么会有区别;这锅只能丢给规范—一句话规范如此
-
虽然被大脸,不过这波姿势长的好,求天天打脸