zoukankan      html  css  js  c++  java
  • Dom

    1.1 获取标签:直接选择器和间接选择器

      1、Dom作用

          1. 通过 tag, name, id 等方式来查找html标签中的内容

          2. 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口

          3. 它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式

          4. DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

      2、四种Dom直接选择器作用

          1.  document.getElementById                          # 根据ID获取一个标签(字符串)

          2.  document.getElementsByClassName        # 根据class属性获取标签集合(数组)

          3.  document.getElementsByName                 #  根据name属性获取标签集合(数组)

          4.  document.getElementsByTagName           # 根据标签名获取标签集合(数组)

    # 1. 根据ID获取一个标签(字符串)
        document.getElementById('i1');                             # 通过标签id获取标签
        document.getElementById('i1').innerText = '新内容';         # 获取标签中的内容并附新值
        
    # 2. 根据class属性获取标签集合(数组)
        document.getElementsByClassName('c1')                      # 获取所有class=’c1’的标签,以数组返回
        document.getElementsByClassName('c1')[0]                   # 得到所有匹配标签中的一个
        document.getElementsByClassName('c1')[0].innerText         # 获取标签中的内容
    
    # 3. 根据name属性获取标签集合(数组)
        document.getElementsByName('i1name')                       # 获取所有name=’i1name’的标签并以数组形式返回
        document.getElementsByName('i1name')[0]                    # 获取第一个匹配的标签
        document.getElementsByName('i1name')[0].innerText          # 获取第一个匹配标签的值
        
    # 4. 根据标签名获取标签集合(数组)
        document.getElementsByTagName('a');                        # 获取所有a标签(以列表形式返回)
        document.getElementsByTagName('a')[1];                     # 获取a标签列表中的第二个元素
        document.getElementsByTagName('a')[1].innerText = 'sb';    # 将第二个a标签内容改成sb
    四种DOM直接选择器

      3、DOM间接选择器作用

          1. parentElement                                          // 父节点标签元素

          2. children                                                    // 所有子标签

          3. firstElementChild                                     // 第一个子标签元素

          4. lastElementChild                                     // 最后一个子标签元素

          5. nextElementtSibling                                // 下一个兄弟标签元素

          6. previousElementSibling                          // 上一个兄弟标签元素

    # parentNode                 // 父节点
    # childNodes                 // 所有子节点
    # firstChild                 // 第一个子节点
    # lastChild                  // 最后一个子节点
    # nextSibling                // 下一个兄弟节点
    # previousSibling            // 上一个兄弟节点
    
    # parentElement              // 父节点标签元素
    # children                   // 所有子标签
    # firstElementChild          // 第一个子标签元素
    # lastElementChild           // 最后一个子标签元素
    # nextElementtSibling        // 下一个兄弟标签元素
    # previousElementSibling     // 上一个兄弟标签元素
    更多间接查找
    # 1. tag = document.getElementById('i1');      //首先找到id=i1的标签
    # 2. tag.parentElement                         //找到id='i1'父级div标签(也就是外层标签)
    # 3. tag.parentElement.children                //通过父级标签找到所有子标签
    间接查找举例

    1.2 操作标签

       1、 对标签内容操作

            tag = document.getElementById('i1');           //首先找到id=i1的标签并赋值给tag

        1.  tag.innerText

            作用: 只能获取指定标签的文本内容,如果标签中有其他子标签,自动忽略 

            tag.innerText="<a href='https://www.baidu.com'>百度</a>"             //将内容当字符串,替换对应的文本内容

        2.  tag. innerHTML

            作用: 可以获取指定标签中所有内容,如果里面有很多子标签也能获取

            tag.innerHTML = "<a href='https://www.baidu.com'>百度</a>"       //将内容当做a标签添加到模块中

        3.  tag.value                         

            1、 用来获取input框中输入的内容的值

            2、 可以用来获取select中选中对象对应的value值

            3、 可以获取textarea 多行文本中的值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div style=" 600px;margin: 0 auto;">
        <!--onfocus 事件在对象获得焦点时发生自动执行Focus函数-->
        <!--onblur当焦点移出时自动执行Blur函数-->
        <input id="i1" onfocus="Focus();" onblur="Blur();" type="text" value="请输入关键字"/>
    </div>
    
    <script>
        //1 当鼠标移到输入框,将输入框中内容清空
        function Focus(){
            var tag = document.getElementById('i1');    //获取输入框标签
            var val = tag.value;                        //获取输入框标签中的值
            if(val == "请输入关键字"){                  //将输入框中内容清空
                tag.value = "";
            }
        }
    
        //2 如果没有在输入框中写任何东西就移走,那么就重新写上“请输入关键字”
        function Blur(){
            var tag = document.getElementById('i1');
            var val = tag.value;
            if(val.length ==0){
                tag.value = "请输入关键字";
            }
        }
    </script>
        <!--<input type="text" placeholder="请输入关键字" />   这个是新html内容,这句话就可以实现搜索框-->
    </body>
    </html>
    实现 请输入关键字 举例

       2、对class标签样式操作

          1.  tag.className = 'c1';                                     //将tag中标签修改成class标签c1

          2.  tag.classList.add('c2');                                   //将tag中标签添加一个class标签c2

          3.  tag.classList.remove('c2')                              //将tag中刚添加的class标签c2删除

          4.  tag.classList                                                  //查看tag标签中所有class标签,以列表形式返回

      3、对style属性操作

          说明: 在JavaScript中修改style样式与html中区别是将横杠省略变成大小写(如:font-size在JavaScript中是: fontSize)

          tag = document.getElementById('i1');

          tag.style.color = 'red';                                             //利用style将字体颜色修改成红色

          tag.style.backgroundColor = ‘red’;

       4、对属性操作

          <input id = "i2" type="text" name="username" value="zhangsan">

          tag = document.getElementById("i2");

          1. tag.attributes                                                          获取所有属性,以列表返回结果

          2. tag.setAttribute("value","lisi");                             将属性value的值改成value="lisi"

          3. tag.removeAttribute("value");                               删除标签中的value属性的值

          4. tag.getAttribute("name");                                      获取属性name的值

       5、创建标签

    #  方式一
        var tag = document.createElement('a')
        tag.innerText = "xiaonq"
        tag.className = "c1"
        tag.href = "http://www.cnblogs.com/xiaonq"
    
    #  方式二
        var tag = "<a class='c1' href='http://www.cnblogs.com/xiaonq'>xiaonq</a>"
    创建简单标签
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        <div class="content_div">
    
        </div>
    
        <script src="/static/jquery-1.12.4.min.js"></script>
        <script>
            // <a href="javascript:void(0);" class="like_btn f1" like_count="0" onclick="like(this,0)" like_tag="">已赞(1)</a>
            $(function () {
                var content_div = document.getElementsByClassName('content_div')[0];
                a_comment = document.createElement('a');
                a_comment.href = 'javascript:void(0);';
                a_comment.className = 'like_btn f1';
                a_comment.setAttribute('like_count','0');
                a_comment.setAttribute('onclick',"like(this," + 0 + ")");
                a_comment.innerText = '赞(0)';
                content_div.appendChild(a_comment);
            });
    
            function like(ths,num) {
                var like_count = $(ths).attr('like_count');
                if(!ths.hasAttribute('like_tag')){                 // 点赞
                    var like_count = eval(like_count + "+" + 1);
                    ths.setAttribute('like_tag','');
                    var content = "已赞(" + like_count + ')';
                }else {                                            // 取消点赞
                    ths.removeAttribute('like_tag','');
                    var content = "赞(" + like_count + ')';
                }
                ths.innerText = content
            }
        </script>
    </body>
    </html>
    创建a标签并绑定地点击事件(点赞)
    <body>
        <div id="div1">
            <p id="p1">This is a paragraph.</p>
            <p id="p2">This is another paragraph.</p>
        </div>
    
        <script>
            var para=document.createElement("p");
            var node=document.createTextNode("This is new.");
            para.appendChild(node);
    
            var element=document.getElementById("div1");
            element.appendChild(para);
        </script>
    </body>
    appendChild追加新创建的标签
    <body>
        <div id="verify_code">
            <p onclick="create_verify_code_img()">点击创建img标签</p>
        </div>
    
        <script>
            /* 创建img标签及属性 */
            // <img id="verify_code_img" src="/verify_code/" class="verify_code">
            function create_verify_code_img() {
                    var img = document.createElement('img');
                    img.id = 'verify_code_img';
                    img.src = '/app01/verify_code/';
                    img.className = 'verify_code';
                    img.onclick = reload_verify_code;
                    document.getElementById('verify_code').appendChild(img)
            }
    
            function reload_verify_code() {
                console.log('reload_verify_code函数被调用')
            }
        </script>
    </body>
    创建img标签并添加绑定事件

    1.3 DOM其他操作

       1、指定标签位置插入的四种方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <input type="button" onclick="AddEle1();" value="+" />
        <div id="i1">
            <p><input type="text" /></p>
        </div>
    
        <script>
            //字符串创建方法
            function AddEle1(){
                // 创建一个标签
                // 将标签添加到i1里面
                var tag = "<p><input type='text'/></p>";
                document.getElementById('i1').insertAdjacentHTML("beforeEnd",tag);
            }
        </script>
    </body>
    <!--注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'-->
    </html>
    点击加号自动添加input框

       2、绑定事件提交表单

           document.getElementById("myForm").submit()

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form id="myForm" action="/login/" method="get">
            <input type="text" name="firstname" size="20">
            <input type="button" onclick="formSubmit()" value="提交">
        </form>
    
        <script type="text/javascript">
            function formSubmit(){
                document.getElementById("myForm").submit()
            }
        </script>
    </body>
    </html>
    绑定事件提交表单

       3、URL和刷新

          1) location.href                                     获取URL

          2) location.href = "url"                          重定向

                window.location.href='/app01/'

          3) location.reload()                              刷新当前页面

       4、定时器

          1)setInterval                      多次定时器

          2)clearInterval                   清除多次定时器(定时器中内容不执行)

          3)setTimeout                     单次定时器

          4)clearTimeout                  清除单次定时器

       5、输出提示信息

          1.  console.log("输出到屏幕")                     输出框

          2.  alert('弹出框');                                       弹出框

          3.  confirm                                                 确认框

    1.4 DOM绑定事件的三种方法

       1、直接标签绑定  onclick = 'xxx()'

    <div id="test" onclick="t1()">
        dsad
    </div>
    <script>
        function t1(){
            console.log('点击输出内容');
        }
    </script>
    直接绑定举例

      2、DOM查找标签动态绑定

    <div id="test" >
        dsad
    </div>
    <script>
        var mydiv = document.getElementById("test");
        console.log(mydiv);
        mydiv.onclick = function(){
            console.log("点击输出内容");
        }
    </script>
    DOM查找标签动态绑定

      3、一个事件同时出发多个函数

    <div id="test" >
        aaa
    </div>
    <script>
        var mydiv = document.getElementById("test");
        //addEventListener提供了三个参数
        //第一:绑定的事件,第二:触发的匿名函数,第三:只能是true(从事到下打印)或false(重下到上)
        mydiv.addEventListener('click',function(){console.log('aaa2')},true);
        mydiv.addEventListener('click',function(){console.log('bbb1')},true);
    </script>
    一个事件同时触发多个函数

    1.5 DOM可以绑定的事件

             

  • 相关阅读:
    [UE4]九宫格图片拉伸
    [UE4]IsValid方法妙用
    [UE4]蓝图函数库
    [UE4]创建KillInfoPanel
    [UE4]条件语句Select
    [UE4]控件模板参数
    [UE4]控件模板
    [UE4]不推荐的UI更新方式
    [UE4]事件驱动的UI更新:事件调度器
    [UE4]更新UI的三种方式
  • 原文地址:https://www.cnblogs.com/jiaxinzhu/p/12667094.html
Copyright © 2011-2022 走看看