这个区别我估计大神都不知道,问题源于博主,细节被一个妹子发现的

事情经过是这样

    <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的结合

  • 至于以上为什么会有区别;这锅只能丢给规范---一句话规范如此

  • 虽然被大脸,不过这波姿势长的好,求天天打脸

document.querySelectorAll() 与document.getElementTagName() 的区别的更多相关文章

  1. HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);

    基本用法 querySelector 该方法返回满足条件的单个元素.按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素. ----> querySe ...

  2. document.querySelectorAll() 兼容 IE6

    不多说,直接上代码 // 使用 css 选择器获取元素对象 兼容性封装 Test Already. function getElementsByCss(cssStr){ if(document.que ...

  3. js 原生 document.querySelectorAll document.getElementsByTagName document.querySelector document.getElementById的区别

    1.querySelector只返回匹配的第一个元素,如果没有匹配项,返回null.  2.querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist(节点数组). ...

  4. document.getElementById和document.querySelector的区别

    zepto中的$(".111")出错,jQuery中$(".111")不出错的原因: zepto用document.querySelector实现,jQuery ...

  5. document.querySelector()与document.querySelectorAll()

      document.querySelector()与document.querySelectorAll() CreationTime--2018年7月1日10点49分 Author:Marydon ...

  6. 谈谈document.ready和window.onload的区别

    在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行 ...

  7. Array.prototype.slice.call(document.querySelectorAll('a'), 0)

    Array.prototype.slice.call(document.querySelectorAll('a'), 0)的作用就是将一个DOM NodeList 转换成一个数组. slice()方法 ...

  8. document.body、document.documentElement和window获取视窗大小的区别

    来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗口大小的三种方法(浏览器的视口,不包括工具栏和滚动条). 对于In ...

  9. 如何循环遍历document.querySelectorAll()方法返回的结果

    使用JavaScript的forEach方法,我们可以轻松的循环一个数组,但如果你认为document.querySelectorAll()方法返回的应该是个数组,而使用forEach循环它: /* ...

随机推荐

  1. protobuf 系列 ---------下载、编译与使用

    protobuf是谷歌开发并开源的二进制序列化工具,比常用的xml,json体积更小,解析速度更快. 目前,手头上的项目有涉及到这个工具,打算仔细研究一番,顺带记录遇到的问题,解决方法,时间足够的话, ...

  2. Tomcat 安装与配置

    1. 将压缩文件“apache-tomcat-7.0.62.zip ”上传到linux系统目录:/home/下 2. 进入目录 cd /home/ 解压文件,执行如下命令:unzip apache-t ...

  3. R语言:利用caret包中的dummyVars函数进行虚拟变量处理

    dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterizati ...

  4. 记一次利用AutoMapper优化项目中数据层到业务层的数据传递过程。

    目前项目中获取到DataSet数据后用下面这种方式复制数据. List<AgreementDoc> list = new List<AgreementDoc>(); ].Row ...

  5. oracle查询第一篇

    第一个小知识点: clear 在oracle中也可以用以清除屏幕上的内容 第二个小知识点: 在一个表中插入自身的查询结果 insert into my_table (id,name,age) sele ...

  6. ASP.NET MVC5(三):表单和HTML辅助方法

    表单的使用 Action和Method特性 Action特性用以告知浏览器信息发往何处,因此,Action特性后面需要包含一个Url地址.这里的Url地址可以是相对的,也可以是绝对的.如下Form标签 ...

  7. UI篇之——用户体验

    内容均为原创,转载请注明处处谢谢. 用户体验(User Experience,简称UX)是一个关于用户(users)以及交互(interactive)技术系统领域的整体概念.具体来说,它代表了一个网站 ...

  8. .NET 随记

    1. goto 常用于 switch语句中2. 字符串相加用 StringBuilder的Append()方法性能好3. str.Trim(',') 清除字符串后的","4. st ...

  9. Python 内置函数汇总

    循环设计与循环对象 range() enumerate() zip() iter() 函数对象 map() filter() reduce() 序列操作 all([True, 1, "hel ...

  10. head first python helloword

    如何使用python 打出hello word 在python shell 键入print 'hello word'( python 2) or  print ("hello word&qu ...