zoukankan      html  css  js  c++  java
  • 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>
    " +
                "        <td>"+id+"</td>
    " +
                "        <td>"+name+"</td>
    " +
                "        <td>"+gender+"</td>
    " +
                "        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    " +
                "    </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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>HTMLDOM</title>
    </head>
    <body>
    <div id="div1">
        div
    </div>
    <script>
        var div = document.getElementById("div1");
        //alert(div.innerHTML);
        //div变成文本输入框
        div.innerHTML = "<input type='text'>";
        //div中追加文本输入框
        div.innerHTML += "<input type='text'>";
    </script>
    </body>
    </html>

        2、使用html元素对象的属性

        3、控制样式

          1、使用元素的style属性来设置

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>HTMLDOM_控制样式</title>
    </head>
    <body>
    <div id="div1">div1</div>
    <script>
        var div1 = document.getElementById("div1");
        div1.onclick = function () {
            //修改样式方式1
            div1.style.border = "1px solid red";
            //font-size
            div1.style.fontSize = "200px";
        }
    </script>
    </body>
    </html>

          2、提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>HTMLDOM_控制样式</title>
        <style>
            .d1{
                border: 1px solid red;
                width: 100px;
                height: 100px;
            }
            .d2{
                border: 1px solid blue;
                width: 200px;
                height: 200px;
            }
        </style>
    </head>
    <body>
    <div id="div1">div1</div>
    <script>
        var div1 = document.getElementById("div1");
        div1.onclick = function () {
          div1.className = "d2";
        }
    </script>
    </body>
    </html>
    That which doesn't kill me makes me stronger!
  • 相关阅读:
    终于把5GB的Cygwin安装完成了
    JavaApplet-Application Blocked..Your security setting have blocked an untrusted application from running..
    C++程序运行时间测定
    WAV MP3 Converter-强大的音频转换软件-特别版
    搞ACM的你伤不起[转载] 原作者:RoBa
    邮件中的CC和BCC含义
    MESS-配置
    ShareRepository
    利用DB Link两步搞定Oracle两个数据库间的表同步
    使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
  • 原文地址:https://www.cnblogs.com/21seu-ftj/p/12329496.html
Copyright © 2011-2022 走看看