博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NodeList 与 HTMLCollection 二三事
阅读量:5876 次
发布时间:2019-06-19

本文共 923 字,大约阅读时间需要 3 分钟。

Dom 结构如下:

  • 1.dsfs
  • 2.dsfs
  • 3.dsfs
  • 5.dsfs
  • 4.dsfs
  • 6.dsfs
  • 7.dsfs
  • 8.dsfs
  • 1.NodeList 是 querySelectorAll 的返回结果

    clipboard.png

    2.HtmlCollection 是 getElementByTagName的结果

    clipboard.png

    3.不要在意两个数量的区别,

    首先NodeList 是DOM 快照,节点数量和类型的快照,就是对节点增删,NodeList 感觉不到,但是对节点内部内容修改,是可以感觉到的,比如修改innerHTML;

    HtmlCollection 是live绑定的,节点的增删是敏感的;

    4.可写性问题
    1.直接对NodeList, HtmlCollection进行赋值,是失败的

    clipboard.png

    2.元素是可读的,是对dom节点的引用
    > var ef = lis[1]< undefined> ef < 
  • ​2.dsfs​
  • ​> lis[1] = ef<
  • ​2.dsfs​
  • ​> Object.prototype.toString.call(ef)< "[object HTMLLIElement]"
    3.然后我就想将NodeList,或者HtmlCollection 排个序啥的,很常见的需求既然直接修改不行,那我先存到数组

    clipboard.png

    转换过后可行,下面直接进行排序
    > lis = document.querySelectorAll('li');< (8) [li, li, li, li, li, li, li, li]> myDiv.innerHTML = Array.from(lis).sort((a,b)=>parseInt(b.innerHTML)-parseInt(a.innerHTML)).map((item)=>item.outerHTML).join('');

    完美降序排序

    在用HTMlCollection来实现一下升序,完美;
    clipboard.png
    ..]

    转载地址:http://eskix.baihongyu.com/

    你可能感兴趣的文章
    SQL分布式查询、跨数据库查询
    查看>>
    C#------连接SQLServer和MySQL字符串
    查看>>
    Arcgis Licensemanager 不能启动的原因之一(转载)
    查看>>
    (原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
    查看>>
    $digest already in progress 解决办法——续
    查看>>
    虚拟机 centos设置代理上网
    查看>>
    Struts2中Date日期转换的问题
    查看>>
    mysql 数据类型
    查看>>
    Ubuntu 设置当前用户sudo免密码
    查看>>
    设置tomcat远程debug
    查看>>
    android 电池(一):锂电池基本原理篇【转】
    查看>>
    Total Command 常用快捷键
    查看>>
    ionic 调用手机的打电话功能
    查看>>
    怎么使用阿里云直播服务应用到现在主流直播平台中
    查看>>
    Xcode全局替换内容,一键Replace
    查看>>
    1000 加密算法
    查看>>
    exif_imagetype() 函数在linux下的php中不存在
    查看>>
    Ruby的case语句
    查看>>
    Linux的链接文件-ln命令
    查看>>
    maven的tomcat插件如何进行debug调试
    查看>>