DOM动态解析的关键

加入一个元素中追加了2个文本节点 可以通过normalize()方法合并二个文本节点
splitText()可以分割子节点 一个文本节点分割成2 个 传入分割下标根据字符来算


nodeList 其近亲 NamedNodeMap HTMLCollection 都是整体上解析DOM的关键所在

这三个集合都是动态的 当文档发生变化实时更新的 所以他们的信息都是最新的


HTMLCollection 是一个接口,表示 HTML 元素的集合,它提供了可以遍历列表的方法和属性

3者区别

var divs = document.getElementsByTagName("div");
alert(divs instanceof HTMLCollection); //true (chrome中返回false,divs是NodeList对象)

var div = document.getElementById("div1")

var children = div.childNodes; //获取div元素子节点集合
alert(children instanceof NodeList); //true

var attrs = div.attributes; //获取div元素的特性
1 alert(children instanceof NamedNodeMap); //true

以上代码中,chrome下的document.getElementsByTagName("div")将返回NodeList对象。

这三个对象都是“类数组”,可以获取他们的length,也可以通过 attrs[0] 获取数据,有点类似与函数里面的arguments。

NamedNodeMap和Attr
div.attrbutes将返回一个NamedNodeMap对象,即NamedNodeMap存储是的div的“特性Attribute”集合。而集合中的每一个元素,都是Attr类型的对象。Attr对象有三个属性,name、value和specified。

但是在日常应用中,一般会应用getAttribute()、setAttribute()和romoveAttribute()来操作特性,不需要直接访问特性对象

为什么说他们是动态的来看看这个

       var divs = document.getElementsByTagName("div"),
            i,
            div;
        for (i = 0; i < divs.length; i++) {
            div = document.createElement("div");
            document.body.appendChild(div);
        }

总结一下就是说前面2个是获取的元素存在NodeList 或者HTMLCollection中 而最后一个是属性集合

扩展选择器

selectors API Level 1 原声的API 可以提高性能的选择器
querySelector()单个元素第一个
querySelectorAll() 回去所有返回NodeLIst
selectors API Level 2
matchesSelector()判断是否匹配 支持不好 需要加前缀msmatchesSelector()
mozmatchesSelector()
webkitmatchesSelector()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 除了document对象,在DOM中最常用的就是Element对象了,Element对象表示HTML元素。 Ele...
    Alkaidx阅读 899评论 0 0
  • 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课...
    前端进阶之旅阅读 12,768评论 13 94
  • 本章内容 理解包含不同层次节点的 DOM 使用不同的节点类型 克服浏览器兼容性问题及各种陷阱 DOM 是针对 HT...
    闷油瓶小张阅读 689评论 0 1
  • 问题 1.dom对象的innerText和innerHTML有什么区别? innerText: 当使用innerT...
    饥人谷_任磊阅读 632评论 0 1
  • 前天去朋友家吃饭,进门温暖,四周沙发简单温馨,中间的一个烧煤炉子吸引了我所有的注意。炉子里火苗正旺,炉盖已经泛红,...
    Mikey米客阅读 709评论 0 1