2019-03-06 DOM对象

2019-03-06  本文已影响0人  千里一线缘

DOM对象概述

DOM(Document Object Model)对象即文档对象模型,是html和xml的编程接口,

DOM对象由核心 DOM,HTML DOM,XML DOM三部分组成, 其中我们主要接触的是

HTML DOM, HTML DOM定义了访问和操作html文档的标准编程接口和方法。

DOM 以树结构表达 HTML 文档,如下图:

image

HTML DOM 节点

在html中一切内容都是节点

这些节点共同组成了节点树:

image

节点之间的关系

DOM节点之间的关系和我们人类也很相似,毕竟是我们人类发明规范的,也有父子,兄弟的关系。

如图:

image

从图中可以看出:

HTML DOM 方法

  1. 获取元素的方法

    • 通过ID获取元素 getElementById();

    var id = document.getElementById('id名');

    • 通过元素名称获取元素,获取的是该元素的元素列表

    var lis = document.getElementsByTagName('元素名称');

    • 通过类名称获取元素,获取的是名称为该类名的元素列表(有兼容问题,ie8即以下不支持)

    var lis = document.getElementsByClassName('元素名称');

    • html5新增元素选择器querySelector()和 querySelectorAll();(有兼容问题,ie8即以下不支持)

      var id = document.querySelector('#id'); //获取id元素,id名称前需加#

      var calssName = document.querySelector('.calssName'); //获取类元素,类名前需加.

      querySelector()和 querySelectorAll()的区别

      • querySelector() 获取的是单个元素,querySelectorAll()获取的是元素列表(多个元素)

      • 用法相同

      var calssNames = document.querySelectorAll('.calssName'); //获取类元素,类名前需加.

  2. 操作元素的方法

    • 属性方法innerHTML和innerText

      • innerHTML获取HTML内容(包括html标签)

      • innerText 获取文本内容(不包括html标签)

      如下例所示:

      
      <p>hello word</p>
      
      
      
      var p = docuement.querySelector('p');
      
      console.log(p.innerHTML); // <p>hello word</p>
      
      console.log(p.innerText);  //hello word
      
      

    也可以用innerHTML和innerText来修改内容

     > p.innerHTML = "新文本!";
    
     * 节点之间关系的访问与操作
    
         * parentNode  获取某元素的父节点
    
         * childNodes 获取某元素的子节点
    
         * children获取某元素的子节点
    
         * firstChild 获取某元素的第一个子节点
    
         * lastChild 获取某元素的最后一个子节点
    
         * previousSibling 获取某元素的上一个兄弟节点
    
         * nextSibling 获取某元素的下一个兄弟节点
    
     例子:
    
     ```html
    
     <ul>
    
           <li>第一个节点</li>
    
           <li class="child">第一个节点</li>
    
           <li>第一个节点</li>
    
     </ul>
    
     ```
    
     ```javaScript
    
       var ul = document.querySelector('ul');
    
       var childs = ul.childNodes;  //获取该元素的子节点
    
       var firstChild = ul.firstChild ;
    
       var lastChild = ul.lastChild ;
    
       var child = document.querySelector('child');
    
       var parent = child.parentNode;
    
       var lastNode = child.nextSibling;
    
       var prevNode = child.previousSibling;
    
     ```
    
    • 操作节点增,删,改

      1. 创建元素节点createElement和createTextNode(创建文本节点)

      2. 添加子节点appendChild()和insertBefore()在指定的子节点前面插入新的子节点

      3. 删除子节点 removeChild()

      4. 替换子节点 replaceChild()

      实例:

      
      <div id="div1"
      
              <p id="p1">这是一个段落。</p>
      
              <p id="p2">这是另一个段落。</p>
      
      </div>
      
      
      
          var para=document.createElement("p");
      
          var node=document.createTextNode("这是一个新段落。");
      
          para.appendChild(node);
      
          var element=document.getElementById("div1");
      
          element.appendChild(para);
      
          var child=document.getElementById("p1");
      
          element.replaceChild(para,child);
      
          element.removeChild(child);
      
      

      常用方法总结:

      方法 | 描述

      ------------ | ------------

      getElementById() | 返回带有指定 ID 的元素。

      getElementsByTagName() | 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)

      getElementsByClassName() | 返回包含带有指定类名的所有元素的节点列表(集合/节点数组)

      querySelector() | 返回选定的某个元素

      querySelectorAll() | 返回选定的某个名称的所有元素的节点列表(集合/节点数组)

      createElement() | 创建元素节点

      createTextNode() | 创建文本节点

      appendChild() | 把新的子节点添加到指定节点

      insertBefore() | 在指定的子节点前面插入新的子节点

      removeChild() | 删除子节点

      replaceChild() | 替换子节点

      节点类型:

      节点 | 对应的nodeType属性值 | 对应的常量

      --------- | --------- | ------

      文档节点(document)| 9 | Node.DOCUMENT_NODE

      元素节点(element)| 1 | Node.ELEMENT_NODE

      属性节点(attr)| 2 | Node.ATTRIBUTE_NODE

      文本节点(text)| 3 | Node.TEXT_NODE

      文档片断节点(DocumentFragment)| 11 | Node.DOCUMENT_FRAGMENT_NODE

      文档类型节点(DocumentType)| 10 | Node.DOCUMENT_TYPE_NODE

      注释节点(Comment)| 8 | Node.COMMENT_NODE

      节点关系:

      节点属性 | 描述

      ----------------- | ---------------

      parentNode | 获取某元素的父节点

      childNodes | 获取某元素的子节点列表

      children() | 获取某元素的子节点列表

      firstChild | 获取某元素的第一个子节点

      lastChild | 获取某元素的最后一个子节点

      previousSibling | 获取某元素的上一个兄弟节点

      nextSibling | 获取某元素的下一个兄弟节点

参考和扩展阅读

w3cschool DOM

JavaScript 教程(阮一峰)DOM

上一篇下一篇

猜你喜欢

热点阅读