DOM 小结

作者: 字母31 | 来源:发表于2017-04-16 21:12 被阅读0次

    1、什么是DOM

    DOM,文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展置标语言的的标准编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容。 DOM 提供了一种表述形式— 将文档作为一个结构化的节点组以及包含属性和方法的对象。从本质上说,它将 web 页面和脚本或编程语言连接起来了。

    2、DOM历史

    DOM的历史可以追溯至1990年代后期微软与Netscape“浏览器大战”(browser wars),双方为了在JavaScript与JScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScript、ActiveX以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示,为解决该问题DOM应运而生。目前W3C对DOM进行标准化有Level 1、Level 2、Level 3、Level 4。

    3、DOM常用操作

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    <body>
       <div class="parent">
       <div class="xxx">xxx</div>
       <div class="yyy">yyy</div>
       <div id="xxx"></div>
       <img src="" alt="a">
    </div>
    </body>
    </html>
    

    3.1DOM API 获取元素的方法

    元素查询的API返回的的结果是DOM节点或者DOM节点的列表。

    // 返回当前文档中第一个类名为 "xxx" 的元素
    var x1 = document.querySelector(".xxx")
    
    // 返回一个文档中所有的class为"xxx"或者 "yyy"的div元素
    var xy = document.querySelectorAll("div.xxx, div.yyy")
    
    // 获取元素
    var x2 = document.getElementById('xxx')
    var x3 = document.getElementsByClassName('xxx')
    var img = document.getElementsByTagName('img')
    

    Element也提供了很多相对于元素的DOM操作方法

    // 获取父元素、父节点
    var p1 = x1.parentElement
    var p2 = x1.parentNode
    
    // 获取子节点,子节点可以是任何一种节点
    var c1 = p1.children
    
    // 查询子元素
    var els = ele.getElementsByTagName('td')
    var els = ele.getElementsByClassName('highlight')
    
    // 当前元素的第一个/最后一个子元素节点
    var f1 = 01.firstElementChild
    var l1= p1.lastElementChild
    
    // 下一个/上一个兄弟元素节点
    var el = ele.nextElementSibling
    var el = ele.previousElementSibling
    
    var x1 = document.querySelector(".xxx")
    var xy = document.querySelectorAll("div.xxx, div.yyy")
    var x2 = document.getElementById('xxx')
    var x3 = document.getElementsByClassName('xxx')
    var img = document.getElementsByTagName('img')
    var p1 = x1.parentElement
    var p2 = x1.parentNode
    var c1 = p1.children
    var f1 = p1.firstElementChild
    var l1 = p1.lastElementChild
    
    console.log('x1')
    console.log(x1)
    console.log('xy')
    console.log(xy)
    console.log('x2')
    console.log(x2)
    console.log('x3')
    console.log(x3)
    console.log('img')
    console.log(img)
    console.log('p1')
    console.log(p1)
    console.log('p2')
    console.log(p2)
    console.log('c1')
    console.log(c1)
    console.log('f1')
    console.log(f1)
    console.log('l1')
    console.log(l1)
    

    3.2DOM API 增加节点

    DOM节点创建最常用的方法有

    var el1 = document.createElement('div')
    var el2 = document.createElement('input')
    var node = document.createTextNode('hello world!')
    

    3.3DOM API 更改节点

    // 添加子元素,node 是要插入子节点的父节点,child 即是参数又是这个方法的返回值
    node.appendChild(child)
    
    
    // 替换子元素
    parentNode.replaceChild(newChild, oldChild)
    
    // 插入子元素,如果referenceElement为null则newElement将被插入到子节点的末尾。如果newElement已经在DOM树中,newElement首先会从DOM树中移除。referenceElement 在插入newElement之前的那个节点
    parentElement.insertBefore(newElement, referenceElement)
    

    3.4DOM API 删除节点

    // 删除节点
    node.removeChild(child)
    

    3.5DOM其他常用API

    // 在为属性设置值之前检测该属性是否存在,element.hasAttribute()为返回的布尔值:true 或 false。
    var d = document.getElementById("div1"); 
    if (d.hasAttribute("align")) {
       d.setAttribute("align", "center")
    }
    // 读取元素的所有属性
    var   x= document.getElementById("xxx")
    x.attributes
    

    4、小结

    关于DOM的API还有很多,在此就不一一介绍,大家可以通过MDN来进行了解。

    相关文章

      网友评论

        本文标题:DOM 小结

        本文链接:https://www.haomeiwen.com/subject/uutzattx.html