美文网首页
DOM对象模型

DOM对象模型

作者: 孟泽_f963 | 来源:发表于2018-07-18 14:49 被阅读0次

    DOM对象模型(Document Object Model)

    1.node 节点
    2.attribute 属性
    3.comment 注释
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    1.什么是DOM

    💨DOM是JavaScript操作网页的接口,全称为“文档对象模型”。作用是将网页转为一个JavaScript对象,从而可以用脚本进行操作。

    💨DOM树:浏览器会根据DOM模型,将结构化文档解析成一系列的节点,再有这些节点组合成一个数状结构。

    💨节点的7种类型
    Document:整个文档树的顶层节点
    DocumentType:doctype标签(比如<!DOCTYPE html>)
    Element:网页的各种HTML标签(比如<body>、<a>等)
    Attribute:网页元素的属性(比如class="a" src='img/a.png')
    Text:标签之间或标签包含的文本
    Comment:注释
    DocumentFragment:文档的片段 //不常用
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    2.节点的属性

    💨nodeType 返回一个整数值,表示节点的类型
    文档节点(document):9
    元素节点(element):1
    属性节点(attribute):2
    文本节点(text):3
    文档片断节点(DocumentFragment):11
    文档类型节点(DocumentType)10
    注释节点(Comment):8,

    💨nodeName 返回节点的名称
    文档节点(document):#document
    元素节点(element):大写的标签名
    属性节点(attr):属性的名称
    文本节点(text):#text
    文档片断节点(DocumentFragment):#document-fragment
    文档类型节点(DocumentType):文档的类型
    注释节点(Comment):#comment

    <div id="div">Hello world</div>
    var div = document.getElementById('div');
    div.nodeName // DIV
    

    💨nodeValue 返回节点的文本值,可读可写

    <div id="div">hello world</div>
    var div = document.getElementById('div');
    div.nodeValue //null
    div.firstChild.nodeValue//hello world 
    

    💨textContent 返回当前节点和他所有后代节点的文本。忽略标签。

    <div id="div">我是 <span>span</span></div>
    document.getElementById('div').textContent  //我是span
    

    同样textContent也是一个可读可写的属性。如果写入的内容包含标签, 也会把标签当做文本。

    💨nextSibling 返回当前节点的下一个兄弟节点

    <div id="d1">hello</div><div id="d2">world</div>
    var div1 = document.getElementById('d1');
    var div2 = document.getElementById('d2');
    console.log(d1.nextSibling)//<div id="d2">world</div>
    

    💨parentNode 返回当前前节点的父级节点。只可能是文档节点或元素节点

    console.log(div.parentNode)
    

    💨firstChild 返回当前节点的第一个子节点
    💨lastChild 返回当前节点的最后一个子节点

    var body=document.getElementsByTagName("body")[0]
            console.log(body.firstChild)
            console.log(body.lastChild)
    

    💨childNodes 返回当前节点中的所有子节点

    var body=document.getElementsByTagName("body")[0]
    console.log(body.childNodes)
    

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    3.node的方法

    💨appendChild() 用来插入节点
    💨hasChildNodes() 用来判断一个节点是否有子节点,返回一个布尔值。
    💨cloneNode() 用来克隆一个节点,不会复制事件
    💨inserBefore() 讲一个节点插入到指定位置。插入两个值,第一个值为要添加的节点,第二个值为插入到此值前面,,如果第二个值输入unll则插入到最后面。
    💨removeChild() 删除一个子节点
    💨replaceChild() 替换一个子节点,第一个值为新节点,第二个值为要替换的节点
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    4.父节点和子节点

    <div id="div">
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
        <a href=""></a>
    </div>
    

    💨children 返回当前节点的所有元素子节点,是一组nodelist数据

    var div1=document.getElementById("div")
    console.log(div.children)//HTMLCollection(6) [p, p, p, p, p, a]
    

    💨append 向最后添加一个或多个子节点
    💨prepend 向最前面添加一个或多个子节点
    💨before() 想当前节点前面添加一个或多个节点
    💨after() 想当前节点后面添加一个或多个节点

    var div1=document.getElementById("div")
            var span=document.createElement("span")
            var span2=document.createElement("span")
            var span3=document.createElement("span")
            document.body.append('www')
            div1.append("wowowow",span,)
            document.body.prepend('www')
            div1.prepend("wowowow",span,)
            div1.before(span,span2)
            div1.after(span3)
    

    💨replaceWith() 替换当前节点。

    var div1=document.getElementById("div")
    var span=document.createElement("span")
    div1.replaceWith(span)
    

    相关文章

      网友评论

          本文标题:DOM对象模型

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