JavaScript----DOM

Posted 夏洛蒂的手稿

tags:

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

##  DOM  

  *  概念:Document  Object  Model  文档对象模型

    *  将标记语言文档的各个部分,封装为对象,可以使用这些对象,对标记语言文档进行CRUD的动态操作

  *  W3C  DOM  标准被分为3个不同的部分:

    核心  DOM:针对任何结构化文档的标准模型

      *  Document:文档对象

      *  Element:元素对象

      *  Attribute:属性对象

      *  Text:文本对象

      *  Comment:注释对象

 

      *  Node:节点对象,其他五个的父对象

    XML   DOM:针对XML文档的标准模型

    html  DOM:针对HTML文档的标准模型

  *  核心DMO模型:

    *  Document:文档对象

      1、创建(获取):在html dom模型中可以使用window对象来获取

        1、window.document

        2、document

      2、方法:

        1、获取Element对象:

          1、getElementById();  根据id属性值获取元素对象,id属性值一般唯一。

          2、getElementsByTagName();  根据元素名称获取元素对象们。返回值是一个数组

          3、getElementsByClassName();  根据Class属性值获取元素对象们。返回值是一个数组

          4、 getElementsByName();  根据name属性获取元素对象们。返回值是一个数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document对象</title>
</head>
<body>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
<div class="cls1">div4</div>
<div class="cls1">div5</div>
<input type="text" name="username">
<script>
    var divs = document.getElementsByTagName("div");
    alert(divs.length);
    var div_cls = document.getElementsByClassName("cls1");
    alert(div_cls.length);
    var ele = document.getElementsByName("username");
    alert(ele.length);
</script>
</body>
</html>

        2、创建其他DOM对象:

          createAttribute(name)

          createComment()

          createElement()

          createTextNode()

      3、属性

    *  Element:元素对象

      1、获取/创建:通过document来获取和创建

      2、方法

        removeAttribute():删除属性

        setAttribute():设置属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Element对象</title>
</head>
<body>
<a>点我试一试</a>
<input id="btn1" type="button" value="设置属性">
<input id="btn2" type="button" value="删除属性">
<script>
    var btn1 = document.getElementById("btn1");
    btn1.onclick = function () {
        var ele_a = document.getElementsByTagName("a")[0];
        ele_a.setAttribute("href","https://www.baidu.com");
    }
    var btn2 = document.getElementById("btn2");
    btn2.onclick = function () {
        var ele_a = document.getElementsByTagName("a")[0];
        ele_a.removeAttribute("href");
    }
</script>
</body>
</html>

    *  Node:节点对象,其他五个的父对象

      *  特点:所有dom对象都可以被认为是一个节点

      *  方法:

        *  CRUDdom树:

          *  appendChild()  向节点的子节点列表的结尾添加新的子节点

          *  removeChild()  删除(并返回)当前节点的指定子节点

          *  replaceChild()  用新节点替换一个子结点

      *  属性: 

        *  parentNode:返回节点的父节点。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Node对象</title>
    <style>
        div{
            border: 1px solid red;
        }
        #div1{
            width: 200px;
            height: 200px;
        }
        #div2{
            width: 100px;
            height: 100px;
        }
        #div3{
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
<div id="div1">
    <div id="div2">div2</div>
    div1
</div>
<a href="javascript:void(0)" id="del">删除子节点</a>
<a href="javascript:void(0)" id="add">添加子节点</a>
<script>
    var del = document.getElementById("del");
    var add = document.getElementById("add");
    var div1 = document.getElementById("div1");
    var div2 = document.getElementById("div2");
    del.onclick =function () {
        div1.removeChild(div2);
    }
    var div3 = document.createElement("div");
    div3.setAttribute("id","div3");
    div3.innerHTML = "div3";
    add.onclick =function () {
        div1.appendChild(div3);
    }
    /*
     超链接功能
        1、可以被点击:样式
        2、点击后跳转到href指定的url
     需求:保留1功能,去掉2功能
     实现:href="javascript:void(0)"
    */
</script>
</body>
</html>

案例:动态表格案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>动态表格</title>

    <style>
        table {
            border: 1px solid;
            margin: auto;
            width: 500px;
        }

        td, th {
            text-align: center;
            border: 1px solid;
        }

        div {
            text-align: center;
            margin: 50px;
        }
    </style>

</head>
<body>

<div>
    <input type="text" id="id" placeholder="请输入编号">
    <input type="text" id="name" placeholder="请输入姓名">
    <input type="text" id="gender" placeholder="请输入性别">
    <input type="button" value="添加" id="btn_add">

</div>


<table id="table">
    <caption>学生信息表</caption>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>1</td>
        <td>令狐冲</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    </tr>

    <tr>
        <td>2</td>
        <td>任我行</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    </tr>

    <tr>
        <td>3</td>
        <td>岳不群</td>
        <td>?</td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    </tr>


</table>


<script>

    //1.获取btn
    var btn_add = document.getElementById("btn_add");
    //2.绑定单击事件
    /* btn_add.onclick = function(){
         //获取每一个输入框内容
         var id = document.getElementById("id").value;
         var name = document.getElementById("name").value;
         var gender = document.getElementById("gender").value;

         //获取表格
         var table = document.getElementById("table");

         //创建tr
         var tr = document.createElement("tr");
         //创建td
         var td_id = document.createElement("td");
         var text_id = document.createTextNode(id);
         td_id.appendChild(text_id);
         tr.appendChild(td_id);

         var td_name = document.createElement("td");
         var text_name = document.createTextNode(name);
         td_name.appendChild(text_name);
         tr.appendChild(td_name);

         var td_gender = document.createElement("td");
         var text_gender = document.createTextNode(gender);
         td_gender.appendChild(text_gender);
         tr.appendChild(td_gender);

         var td_option = document.createElement("td");

         var a = document.createElement("a");
         a.setAttribute("href","javascript:void(0);");
         a.setAttribute("onclick","delTr(this)");
         var text_a = document.createTextNode("删除");
         a.appendChild(text_a);
         td_option.appendChild(a);
         tr.appendChild(td_option);

         table.appendChild(tr);

     }*/

    btn_add.onclick = function () {
        //获取每一个输入框内容
        var id = document.getElementById("id").value;
        var name = document.getElementById("name").value;
        var gender = document.getElementById("gender").value;
        //获取表格
        var table = document.getElementById("table");
        table.innerHTML += "<tr>\\n" +
            "        <td>"+id+"</td>\\n" +
            "        <td>"+name+"</td>\\n" +
            "        <td>"+gender+"</td>\\n" +
            "        <td><a href=\\"javascript:void(0);\\" onclick=\\"delTr(this);\\">删除</a></td>\\n" +
            "    </tr>"
    }

    function delTr(obj) {
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode;
        table.removeChild(tr);
    }

</script>
</body>
</html>

 

  *  HTML  DOM

    1、标签体的设置和获取:innerHTML