首页 > 代码库 > DOM基础

DOM基础

1.几个概念

  文档: html 页面

  文档对象: 页面中的元素

  文档对象模型: 定义API,为了让 js 去操作页面中的元素

  DOM 会把文档看成一棵树,同时会定义很多 “方法“ 和 ”属性” 来操作这棵树的每一个节点

 

  元素.childNodes

        a.只读属性,子节点列表

        b.dom节点有12种

           

 1        // NodeType
 2             const unsigned short      ELEMENT_NODE                   = 1;
 3             const unsigned short      ATTRIBUTE_NODE                 = 2;
 4             const unsigned short      TEXT_NODE                      = 3;
 5             const unsigned short      CDATA_SECTION_NODE             = 4;
 6             const unsigned short      ENTITY_REFERENCE_NODE          = 5;
 7             const unsigned short      ENTITY_NODE                    = 6;
 8             const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;
 9             const unsigned short      COMMENT_NODE                   = 8;
10             const unsigned short      DOCUMENT_NODE                  = 9;
11             const unsigned short      DOCUMENT_TYPE_NODE             = 10;
12             const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
13             const unsigned short      NOTATION_NODE                  = 12;

 

        c. IE浏览器和 标准浏览器对于  文本节点 的定义是不一样的。

      举例说明

 

<ul id="ul">
    <li>1111</li>
    <li>2222</li>
    <li>3333</li>
    <li>4444</li>
</ul>
1 var oUl = document.getElementById("ul");
2 
3 alert(oUl.childNodes.length);  // 9,标准
4 
5 alert(oUl.childNodes.length);  // 4,IE8及IE8以下 或者 称为不支持标准规范的 IE 版本

通过例子 单行文字广告向上滚动 也可以看出。

 另外如下代码在 标准浏览器 中会报错。

1 function(var i=0; i<oUl.childNodes.length; i++)
2 {
3     oUl.childNodes[i].style.background = "green";
4 }

文本节点没有style属性

对于 元素非法嵌套的dom结构,标准和非标准浏览器解析dom时的方式也不一样。例如:

1 <ul id="ul1" style="border: 1px solid red;">
2         <li>11111</li>
3         <li>22222</li>
4         <li>33333</li>
5         <li>44444</li>
6     <p>12345</p>
7 </ul>

注意IE6/7 、 IE8 以及 IE9+ 之间的区别。

 那么如何做兼容性处理呢。在这里我们可以使用另外一个属性: children.

 元素.children : 只读 属性 子节点列表集合
                      标准下:只包含元素类型的节点
                      非标准下:只包含元素类型的节点