• DOM


    1、DOM:Document Object Model,文档对象模型。表示文档(如HTML文档)和访问、操作构成文档的各种元素(如HTML标记和文本串)的应用程序接口(API)。它提供了文档中独立元素的结构化、对象化的表示方法,并允许通过对象的属性和方法访问这些对象。

    2、DOM还提供了添加和删除文档对象的方法,这样可以创建动态的文档内容。

    3、DOM还提供了处理事件的接口,它允许捕获和响应用户以及浏览器的动作。

    4、HTML DOM节点:在DOM模型中,每个部分都是节点。

      文档本身是一个节点;

      所以HTML元素是元素节点;

      所有HTML属性是属性节点;

      所有HTML文本是文本节点;

      所有注释是注释节点。

    5、HTML DOM对象有:HTML DOM Document对象、HTML DOM Element对象、HTML DOM Attribute对象、HTML DOM Event对象。

      Document对象:每一个载入浏览器的页面都会成为一个Document对象,它使得我们可以通过脚本访问HTML文档中的任意元素。它也是BOM模型中Window对象的众多属性之一。

      Element对象:Element对象可以拥有为元素节点、文本节点和注释节点的子节点。

      NodeList对象:表示节点列表,比如HTML元素的子节点集合。

      Attribute对象:表示HTML属性,HTML属性始终属于HTML元素。

      Event对象:Event对象代表事件的状态。事件的状态有事件在其中发生的元素、鼠标的坐标、鼠标点击、键盘按键。事件一般和函数结合起来使用。

    6、DOM的分层结构,下图为HTML代码。

    <html>
      <head>
        <title>test</title>
      </head>
    <body>
    我是谁?我从哪里来?我要到哪里去?
    <br>
    <a href="http://baidu.com" >http://baidu.com</a>
    </body>
    </html>

     DOM层次结构图是:

     

    7、DOM中获取文档中指定元素的方法有三种:

      第一、通过遍历,但是此方法较为繁琐;

      第二、通过Document对象的方法。有两个方法可以获取元素。通过元素的Id属性和name属性获取元素。

        document.getElementById("userid");//返回一个元素

        document.getElementByName("userName")[0];//返回一个数组

    8、利用DOM操作文档实现添加和删除评论。

    <!--
    利用DOM操作文档实现添加评论和删除评论的功能
    整体思路:
        1、创建一个table表格,放置评论人和评论内容元组;
        2、创建评论人和评论内容输入接口;
        3、创建addElement函数,利用创建的节点添加评论人和评论内容;
        4、创建deleteFirstElement函数,删除第一条评论;
        5、创建deletedLastElement函数,删除最后一条评论;
        6、创建“发表”按钮,“删除第一条评论”按钮,“删除最后一条评论”按钮,“重置”按钮
    -->
    <!DOCTYPE html>
    <head lang="en">
        <meta http-equiv="Content-Type" content="text/html; charSet=UTF-8" />
        <title>利用DOM操作文档实现添加评论和删除评论的功能</title>
        <style type="TEXT/CSS">
            #table1
            {
                width:600px;
                border:2px solid #ffffff;
                text-align: center;
            }
            #id1
            {
                width: 20%;
                background-color: burlywood;
                text-align: center;
            }
            #id2
            {
                background-color: burlywood;
                text-align: center;
                width: 80%;
            }
            #span1
            {
                padding-right: 25px;
            }
            #span2
            {
                position: relative;
                bottom: 25px;
            }
            #button1,#button2,#button3,#reset1
            {
                position: relative;
                left: 80px;
            }
        </style>
    </head>
    <body>
    <table name="table1" id="table1">
        <tr>
            <td id="id1">评论人</td>
            <td id="id2">评论内容</td>
        </tr>
    </table>
    <br>
    <form id="form1" name="form1" method="post" action="">
        <span id="span1">评论人:</span><input type="text" name="person" id="person"></td><br><br>
        <span id="span2">评论内容:</span><textarea name="content" id="content" rows="4" cols="60"></textarea><br><br>
        <input type="button" id="button1" name="button1" value="发表" onclick="addElement();">
        <input type="button" id="button2" name="button2" value="删除第一条评论" onclick="deleteFirstElement();">
        <input type="button" id="button3" name="button3" value="删除最后一条评论" onclick="deleteLastElement();">
        <input type="reset" id="reset1" name="reset1" value="重置">
    </form>
    <script language="JavaScript">
    
        //增加一条评论人和评论内容
        function addElement()
        {
            if(document.form1.person.value!="" || document.form1.content.value!="")   //保证输入不为空
            {
                var personNode=document.createTextNode(document.form1.person.value);  //通过评论人文本,创建评论人内容文本节点
                var contentNode=document.createTextNode(document.form1.content.value);//通过评论内容,创建评论内容文本节点
                var tdNode1=document.createElement("td");                              //创建td元素节点
                var tdNode2=document.createElement("td");                              //创建td元素节点
                var trNode=document.createElement("tr");                              //创建tr元素节点
    
                tdNode1.appendChild(personNode);                                      //增添评论人文本节点为td节点的子节点
                tdNode2.appendChild(contentNode);                                      //增添评论内容文本节点为td节点的子节点
                trNode.appendChild(tdNode1);                                          //添加评论人td元素为tr元素子节点
                trNode.appendChild(tdNode2);                                          //添加评论内容td元素为tr元素子节点
    
                var tableNode=document.getElementById("table1");                      //获取table对象
                tableNode.appendChild(trNode);                                          //添加tr元素节点为table元素节点的子节点
    
                document.form1.person.value="";                                          //清空评论人文本
                document.form1.content.value="";                                      //清空评论内容文本
            }
            else
            {
                alert("请输入内容!");
            }
    
        }
    
        //删除第一条评论人和评论内容
        function deleteFirstElement()
        {
            var tableNode=document.getElementById("table1");            //获取table对象
            if(tableNode.rows.length>1)
            {
                tableNode.deleteRow(1);                    //删除table元素第二个子节点,也就是第一条评论
            }
        }
    
        //删除最后一条评论人和评论内容
        function deleteLastElement()
        {
            var tableNode=document.getElementById("table1");            //获取table对象
            if(tableNode.rows.length>1)
            {
                tableNode.deleteRow(tableNode.rows.length-1);
            }
        }
    
    </script>
    </body>
    </html>

       

  • 相关阅读:
    前端一些词汇的缩写
    github上值得关注的前端项目
    window注册表
    注册表删除chrome插件
    js二维码扫描
    git push --no-thin
    mac下app store 无法完成您的购物操作
    git终端提示符
    mac 下 apache设置
    windows 下 apache设置
  • 原文地址:https://www.cnblogs.com/joeshine/p/4443618.html
Copyright © 2020-2023  润新知