DOM相关知识点

内容待补充。。。

DOM相关注意题目:

DOM的最小组成单位叫做  
//节点 Node

DOM 有自己的国际标准,目前的通用版本是
//DOM 3

DOM 树的根节点
//HTML

元素 Element 的 NodeType 值为
//1 和Node. ELEMENT_NODE

<div id=x></div>    x的值 
//就是这个 id 为 x 的 div 对应的 Element 对象

document.body.nodeName //"BODY" <div id=parent></div> parent的值 //如果有父窗口,就是父窗口。如果没有,就是当前窗口(不要用全局属性)
//如果想用,可声明一个函数,并立即调用.call(),或者直接()

<div id=x></div> <div id=y></div> x.nextSibling 的值是 //回车构成的文本节点 <div id=parent1> <div id=child1> </div> </div> parent1.childNodes 的值是 //{0:child1, length:1} 伪数组 var parent = document.getElementById('parent'); parent.childNodes.length // 2 parent.appendChild(document.createElement('div')); parent.childNodes.length // 请问现在 length 是多少 //3 因为最后有用childNodes重新看子节点 var allDiv = document.querySelectorAll('div> allDiv.length // 假设是 2 document.body.appendChild( document.createElement('div') ) allDiv.length // 请问现在 length 的值是多少??? //2 因为alldiv是在第一步就取出来了,后面也没有重新取所以一直都是2 //以上题目为什么一个 length 会动态变化,另一个 length 却不会动态变化?
 
 2 document.querySelectorAll方法返回的是一个静态集合。DOM内部的变化,并不会实时反映在该方法的返回结果之中。

ChildNode接口用于处理子节点(包含但不限于Element子节点)。Element节点、DocumentType节点和CharacterData接口,部署了ChildNode接口。凡是这三类节点(接口),都可以使用
// remove()、before()、after()、replaceWith()

节点的类型有七种,分别是
//Document、DocumentType、Element、Attribute、Text、Comment、DocumentFragment
//(这三种不是:Doctype、Tag、TextElement)

HTMLCollection和NodeList的区别

在用原生javascript选择器获取dom元素的时候。能直接返回 

元素的也仅仅只有以下两条

var dom1=document.getElementById("a");
var dom2=document.querySelector("#a");

这两种选择器返回的是a元素。

而其他的选择器,大部分返回的结果是HTMLCollection,或者NodeList。

NodeList 对象是节点的集合,返回的是 Node 集合与 Node(取索引)。由 Node.childNodes 和 document.querySelectorAll 所返回的。

HTMLCollection 对象是元素的集合,返回是 Element 集合与 Element(取索引)。由node.children 和 node.getElementsByXXX 

唯一要注意的是 querySelectorAll 返回的虽然是 NodeList ,但是实际上是元素集合,并且是静态的(其他接口返回的HTMLCollection和NodeList都是live的)

HTMLCollection与NodeList的区别有:

1 HTMLCollection实例对象的成员只能是Element节点,NodeList实例对象的成员可以包含其他节点。

2 HTMLCollection实例对象可以用id属性或name属性引用节点元素,NodeList只能使用数字索引引用。

原文地址:https://www.cnblogs.com/nolaaaaa/p/9060154.html