• NodeList和HTMLCollection 的区别与联系


    首先NodeList和HTMLCollection都是DOM节点的集合。

    NodeList中包含的节点类型可能是Element/Text/Comment/Document/DocumentFragment等,我们知道nodeType的种类有12种。NodeList由Node.childNodes和document.querySelectorAll()返回,不同的是node.ChildNodes返回的是动态(live)的NodeList,而document.querySelectorAll()返回的是静态(static)的NodeList。
    HTMLCollection包含的节点类型是Element,且通过document.getElementByClassName()等方法返回的是动态(live)的HTMLCollection集合。
    NodeList
    (1) Node.childNodes

    //HTML代码
    <div class="container">
        <p>haha1</p>
        <p>haha2</p>
        <p>haha3</p>
    </div>
    //JS代码
    var container = document.querySelector('.container')
    var nodes = container.childNodes
    var p = document.createElement('p')
    p.textContent = 'haha4'
    container.append(p)
    console.log('nodes', nodes)
    console.log('nodesLength', nodes.length)

    得到的结果为:

     可以看到,虽然在append之前就获取了container的childNodes,但是得到的结果是即时更新的。
    (2) document.querySelector()

    //JS代码
    var ps = document.querySelectorAll('p')
    var container = document.querySelector('.container')
    var p = document.createElement('p')
    p.textContent = 'haha4'
    container.append(p)
    console.log('ps', ps)

    得到的结果为:

     可以看到,document.querySelectorAll()得到的NodeList不是即时更新的。

    1. HTMLCollection(以document.getElementByClassName为例)
    //HTML代码
    <div class="container">
        <p class="pp">haha1</p>
        <p class="pp">haha2</p>
        <p class="pp">haha3</p>
    </div>
    //JS代码
    var pp = document.getElementsByClassName('pp')
    var container = document.querySelector('.container')
    var p = document.createElement('p')
    p.textContent = 'haha4'
    p.className = 'pp'
    container.append(p)
    console.log('pp', pp)

    得到的结果如下图:

     可以看到,document.getElementByClassName()得到的结果是即时更新的。

     NodeList中可以包含所有的节点类型,而HTMLCollection只能包含ElementNode类型的节点。

  • 相关阅读:
    redis 命令
    继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
    redis Ok2
    ThinkPHP5 清除runtime缓存文件
    linux系统下使用xampp 丢失mysql root密码 只能远程访问,本地无法连接数据库
    yii2 验证规则使用方法
    thinkphp5 模型表关联
    PHP将base64数据流转换成图片并保存
    Win10下80端口被System占用导致Apache无法启动
    3. Git与TortoiseGit基本操作
  • 原文地址:https://www.cnblogs.com/lguow/p/16048121.html
Copyright © 2020-2023  润新知