DOM

Posted mrweiword-666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM相关的知识,希望对你有一定的参考价值。

1.什么是 DOM?
    DOM 是 Document Object Model(文档对象模型)的缩写。
    W3C DOM 标准被分为 3 个不同的部分:
    核心 DOM - 针对任何结构化文档的标准模型
    XML DOM - 针对 XML 文档的标准模型
    html DOM - 针对 HTML 文档的标准模型
2.HTML DOM 方法
    HTML DOM 方法是我们可以在节点(HTML 元素)上执行的动作。
    HTML DOM 属性是我们可以在节点(HTML 元素)设置和修改的值。
    1.HTML DOM 对象 - 方法和属性
        一些常用的 HTML DOM 方法:
            getElementById(id) - 获取带有指定 id 的节点(元素)
            appendChild(node) - 插入新的子节点(元素)
            removeChild(node) - 删除子节点(元素)
        一些常用的 HTML DOM 属性:
            innerHTML - 节点(元素)的文本值
            parentNode - 节点(元素)的父节点
            childNodes - 节点(元素)的子节点
            attributes - 节点(元素)的属性节点            
    2.一些 DOM 对象方法
        方法                                                                 描述
        getElementById()                             返回带有指定 ID 的元素。

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

        getElementsByClassName()             返回包含带有指定类名的所有元素的节点列表。

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

        removeChild()                                 删除子节点。

        replaceChild()                                 替换子节点。

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

        createAttribute()                         创建属性节点。

        createElement()                             创建元素节点。

        createTextNode()                             创建文本节点。

        getAttribute()                                 返回指定的属性值。

        setAttribute()                                 把指定属性设置或修改为指定的值。
    3.innerHTML 属性
        获取元素内容的最简单方法是使用 innerHTML 属性。
        innerHTML 属性对于获取或替换 HTML 元素的内容很有用。
    4.nodeType 属性
        nodeType 属性返回节点的类型。nodeType 是只读的。
            比较重要的节点类型有:
            元素类型     NodeType
            元素                 1
            属性                 2
            文本                 3
            注释                 8
            文档                 9
    5.HTML DOM 访问
        1.getElementById() 方法
            getElementById() 方法返回带有指定 ID 的元素引用:
            语法
            node.getElementById("id");
        2.getElementsByTagName() 方法
            getElementsByTagName() 返回带有指定标签名的所有元素。
            语法
            node.getElementsByTagName("tagname");
        3.The getElementsByClassName() 方法
            如果您希望查找带有相同类名的所有 HTML 元素,请使用这个方法:
            document.getElementsByClassName("intro");
            上面的例子返回包含 class="intro" 的所有元素的一个列表:
            注意:getElementsByClassName() 在 Internet Explorer 5,6,7,8 中无效。
    6.HTML DOM 访问-修改
        1.创建 HTML 内容
            改变元素内容的最简单的方法是使用 innerHTML 属性。
            下面的例子改变一个 <p> 元素的 HTML 内容:
            实例
            <p id="p1">Hello World!</p>
            <script>
            document.getElementById("p1").innerHTML="新文本!";
            </script>
            <p>段落通过脚本来修改内容。</p>
        2.改变 HTML 样式
            通过 HTML DOM,您能够访问 HTML 元素的样式对象。
            下面的例子改变一个段落的 HTML 样式:
            实例
            <p id="p1">Hello world!</p>
            <p id="p2">Hello world!</p>
            <script>
            document.getElementById("p2").style.color="blue";
            document.getElementById("p2").style.fontFamily="Arial";
            document.getElementById("p2").style.fontSize="larger";
            </script>
        3.创建新的 HTML 元素
            如需向 HTML DOM 添加新元素,您首先必须创建该元素(
                元素节点),然后把它追加到已有的元素上。
            实例
            <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另一个段落。</p>
            </div>
            <script>
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新段落。");
            para.appendChild(node);
            var element=document.getElementById("div1");
            element.appendChild(para);
            </script>
    7.HTML DOM - 元素
        1.创建新的 HTML 元素 - createElement()
            如需向 HTML DOM 添加新元素,您首先必须创建该元素,然后把它追加到已有的元素上。
             实例
            <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另一个段落。</p>
            </div>
            <script>
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新段落。");
            para.appendChild(node);
            var element=document.getElementById("div1");
            element.appendChild(para);
            </script>
        2.创建新的 HTML 元素 - insertBefore()
            上一个例子中的 appendChild() 方法,将新元素作为父元素的最后一个子元素进行添加。
            如果不希望如此,您可以使用 insertBefore() 方法:
             实例
            <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另外一个段落。</p>
            </div>
            
            <script>
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新段落。");
            para.appendChild(node);
            
            var element=document.getElementById("div1");
            var child=document.getElementById("p1");
            element.insertBefore(para,child);
            </script>
        3.删除已有的 HTML 元素
            如需删除 HTML 元素,您必须清楚该元素的父元素:
            实例
            <div id="div1">
                    <p id="p1">这是一个段落。</p>
                    <p id="p2">这是另一个段落。</p>
            </div>
            <script>
            var parent=document.getElementById("div1");
            var child=document.getElementById("p1");
            parent.removeChild(child);
            </script>
        4.替换 HTML 元素
            如需替换 HTML DOM 中的元素,请使用 replaceChild() 方法:
            实例
            <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另外一个段落。</p>
            </div>
            
            <script>
            var parent=document.getElementById("div1");
            var child=document.getElementById("p1");
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新的段落。");
            para.appendChild(node);
            parent.replaceChild(para,child);
            </script>
        5.onload 和 onunload 事件
            当用户进入或离开页面时,会触发 onload 和 onunload 事件。
            onload 事件可用于检查访客的浏览器类型和版本,以便基于这些信息来加载不同版本的网页。
            onload 和 onunload 事件可用于处理 cookies。
        6.onchange 事件
            onchange 事件常用于输入字段的验证。
            下面的例子展示了如何使用 onchange。当用户改变输入字段的内容时,将调用 upperCase() 函数。
            实例
            <input type="text" id="fname" onchange="upperCase()">
        7.onclick 事件
            HTML DOM 允许您使用 javascript 向 HTML 元素分配事件:
            实例
            为 button 元素分配 onclick 事件:
            document.getElementById("myBtn").onclick=function(){displayDate()};
        8.onmouseover 和 onmouseout 事件
            onmouseover 和 onmouseout 事件可用于在鼠标指针移动到或离开元素时触发函数。
        9.onmousedown、onmouseup 以及 onclick 事件
            onmousedown、onmouseup 以及 onclick 事件是鼠标点击的全部过程。
            首先当某个鼠标按钮被点击时,触发 onmousedown 事件,然后,当鼠标
            按钮被松开时,会触发 onmouseup 事件,最后,当鼠标点击完成时,触发 onclick 事件。
    8.HTML DOM 导航
        1.HTML DOM 节点列表
            getElementsByTagName() 方法返回节点列表。节点列表是一个节点数组。
            下面的代码选取文档中的所有 <p> 节点:
            实例
            var x=document.getElementsByTagName("p");
            可以通过下标号访问这些节点。如需访问第二个 <p>,您可以这么写:
            y=x[1];
        2.HTML DOM 节点列表长度
            length 属性定义节点列表中节点的数量。
            您可以使用 length 属性来循环节点列表:
            实例
            x=document.getElementsByTagName("p");
            for (i=0;i<x.length;i++)
            {
                    document.write(x[i].innerHTML);
                    document.write("<br>");
            }
        3.导航节点关系
            您能够使用三个节点属性:parentNode、firstChild 以及 lastChild ,在文档结构中进行导航。
            请看下面的 HTML 片段:
        4.DOM 根节点
            这里有两个特殊的属性,可以访问全部文档:
                document.documentElement - 全部文档
                document.body - 文档的主体
            实例
            <p>Hello World!</p>
            <div>
                    <p>DOM 是非常有用的!</p>
                    <p>这个实例演示了 <b>document.body</b> 属性。</p>
            </div>
            <script>
            alert(document.body.innerHTML);
            </script>
        5.childNodes 和 nodeValue
            除了 innerHTML 属性,您也可以使用 childNodes 和 nodeValue 属性来获取元素的内容。
            下面的代码获取 id="intro" 的 <p> 元素的值:
            实例
            <p id="intro">Hello World!</p>
            <script>
            txt=document.getElementById("intro").childNodes[0].nodeValue;
            document.write(txt);
            </script>
     

 

 



















































































































































































































以上是关于DOM的主要内容,如果未能解决你的问题,请参考以下文章

React虚拟dom中的key值

DOM事件: DOM事件级别DOM事件流DOM事件模型DOM事件捕获过程自定义事件

虚拟DOM(Virtual Dom) VS 影子DOM(Shadow Dom)

虚拟DOM(Virtual DOM)

关于DOM级别的一些问题,DOM0,DOM1,DOM2

DOM事件类