• python之路_前端基础之JS(3)


      DOM(document object model)对象把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树),定义了访问和操作HTML文档的标准方法。

    一、查找标签

    1、直接查找标签

      总共有如下四种直接查找的方式:

    document.getElementById(“idname”)                             //通过id名
    document.getElementsByTagName(“tagname”)                      //通过标签名
    document.getElementsByName(“name”)                            //通过name名
    document.getElementsByClassName(“name”)                       //通过class名

      上述四种查找中,因为id的唯一性,得到结果就是对应标签对象。但是对于其他三种方式,因为其不唯一性,得到是包含满足条件的对象数组,通过数组索引可以取到相应的element对象,注意即使结果就一个对象,它也是一个对象数据。

    <body>
    <div id="div1">
        <div class="div2">i am div2</div>
        <div name="yuan">i am div2</div>
        <div id="div3">i am div2</div>
        <p>hello p</p>
    </div>
    
    <script>
    /*通过document对象可以查找任何级别的对象*/
       var div1=document.getElementById("div1");
    /*通过查找到的element对象(必须是id对象)查找其子级标签时,不支持通过id和name查找*/ //支持; var ele= div1.getElementsByTagName("p"); alert(ele.length); //支持 var ele2=div1.getElementsByClassName("div2"); alert(ele2.length); //不支持 var ele3=div1.getElementById("div3"); alert(ele3.length); //支持 var ele3_=document.getElementById("div3"); console.log(ele3_) //不支持 var ele4=div1.getElementsByName("yuan"); alert(ele4.length) //支持 var ele4_=document.getElementsByName("yuan") alert(ele4_.length) </script> </body> </html>

    2、导航查找

      导航查找即是通过通过某个标签定位其他标签,主要属性如下:

    '''
    parentElement                                     // 父节点标签元素
    children                                          // 所有子标签
    firstElementChild                                 // 第一个子标签元素
    lastElementChild                                  // 最后一个子标签元素
    nexElementtSibling                                // 下一个兄弟标签元素
    previousElementSibling                            // 上一个兄弟标签元素
    
    '''

      实例如下:

    <script>
       var ele1=document.getElementById("div1");
       var child=ele1.children;
       alert(child.length)  ;                               //结果为4,得到是一个对象数组
       var first=ele1.firstElementChild;
       console.log(first);                                  //得到第一个孩子对象:<div class="div2">i am div2</div>
       var last=ele1.lastElementChild;
       console.log(last);                                   //得到最后一个孩子对象: <p>hello p</p>
    
        var ele2=document.getElementById("div3");
        var parent=ele2.parentElement;
       console.log(parent);                                  //获得父级对象
        var next=ele2.nextElementSibling;
        console.log(next);                                   //得到下一个紧挨的兄弟对象:<p>hello p</p>
        var privous=ele2.previousElementSibling;
        console.log(privous);                                //得到上一个紧挨的兄弟对象:<div name="yuan">i am div2</div>
    
    </script>

    二、标签操作

    1、文本操作

       取值操作:

      innerText主要取得元素内的纯文本内容,而innerHTML则取得元素内包含所有的东西,包含文本和子元素,实例如下:

    <body>
    <div class="c1">
        <span>hello</span>
    </div>
    <script>
        var ele=document.getElementsByClassName("c1")[0];
        console.log(ele.innerText);                                         //输出结果为:hello
        console.log(ele.innerHTML);                                         //输出结果为:<span>hello</span>
    </script>
    </body>

      赋值操作:

      如下两种赋值,均是首先对标签内的所有的内容(包含子标签)进行清空,然后将进行赋值,不同的是innerText赋值的内容中即使有标签的内容,标签也会当做文本显示,即不识别标签,而innerHTML会识别标签,只显示文本内容,实例如下:

    <body>
    <div class="c1">
        <span>hello</span>
    </div>
    <script>
            var ele=document.getElementsByClassName("c1")[0];
            ele.innerText="<a href="">hello</a>";                         //屏幕显示:“<a href="">hello</a>”
            ele.innerHTML="<a href="">hello</a>";                         //屏幕显示:“hello”,<a>还是标签
    </script>
    </body>

    2、属性操作

      包括属性的设置和获取,实例如下:

    <body>
    <div class="c1 c2" id="d1">egon</div>
    <script>
         var ele=document.getElementsByClassName("c1")[0];
         // 原生JS支持:
         console.log(ele.getAttribute("class"));                                 //获得class属性名:c1 c2
         ele.setAttribute("egon","周末");                                         //设置属性:egon=周末
         // DHTML语法:
        console.log(ele.id);                                                     //获得id属性名:d1
        ele.id="d2";                                                             //设置属性:id=d2
    </script>
    </body>

    3、class操作

      包含获取class属性的名字、增加class名字和移除class名字,结合css,可以控制布局效果,应用实例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <style>
            .c1{
                color: red;
            }
            .c2{
                background-color: green;
            }
            .c3{
                line-height: 60px;
            }
        </style>
    </head>
    <body>
    <div class="c1 c2">egon</div>
    <script>
         var ele=document.getElementsByClassName("c1")[0];
         console.log(ele.className);                                                  // "c1 c2"
         ele.classList.add("c3");                                                     //将c3加入到class属性下,实现c3的css效果
         ele.classList.remove("c2");                                                  //将c2从class属性下移除,去除c2的css效果
    </script>
    </body>
    </html>

    4、改变css

      通过:element.style.css属性=“属性值”,语法设置改变css,实例如下:

    <body>
    <p id="d1">hello</p>
    <button>change</button>
    <script>
        var ele_button=document.getElementsByTagName("button")[0];
        var ele_p=document.getElementById("d1");
        /* 给button按钮绑定一个事件,点击后,设置css中的color和fonsize属性*/
        ele_button.onclick=function () {
              ele_p.style.color="red"; 
              ele_p.style.fontSize="24px"
        }
    </script>
    </body>

    5、获取选中value值

      应用实例如下:

    <body>
    <form action="">
        <input type="text" id="user" value="123">
        <select name="pro" id="s1">
            <option value="1">111</option>
            <option value="2">222</option>
            <option value="3">333</option>
        </select>
    </form>
    <script>
        var ele_user=document.getElementById("user");
        console.log(ele_user.value);//123
        ele_user.value="hello";                                      //更改value值
        var ele_s1=document.getElementById("s1");
        console.log(ele_s1.value)                                    //当前选中对应的value值
    </script>
    </body>

    三、绑定事件

    1、事件类型

    onclick        当用户点击某个对象时调用的事件句柄。
    ondblclick     当用户双击某个对象时调用的事件句柄。
    
    onfocus        元素获得焦点。               练习:输入框
    onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
    onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)
    
    onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
    onkeypress     某个键盘按键被按下并松开。
    onkeyup        某个键盘按键被松开。
    
    onload         一张页面或一幅图像完成加载。
    
    onmousedown    鼠标按钮被按下。
    onmousemove    鼠标被移动。
    onmouseout     鼠标从某元素移开。
    onmouseover    鼠标移到某元素之上。
    onmouseleave   鼠标从元素离开
    
    onselect       文本被选中。
    onsubmit       确认按钮被点击。

    2、绑定事件

      方式一:在标签内设置事件类型,让其调用相应的函数。将如下左侧菜单应用实例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .left{
                float: left;
                 20%;
                height: 800px;
                background-color: #c0cddf;
            }
            .right{
                float: left;
                 80%;
                height: 800px;
                background-color: #9add7f;
            }
            .item{
                padding: 10px;
            }
            .title{
                padding: 10px;
                color: white;
                background-color: #2459a2;
                text-align: center;
            }
            .con{
                padding: 5px;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="left">
        <div class="item">
            <div class="title" onclick=fool(this)>菜单一</div>
            <div class="con">
                <p>111</p>
                <p>111</p>
                <p>111</p>
            </div>
        </div>
           <div class="item">
            <div class="title" onclick=fool(this)>菜单二</div>
            <div class="con hide">
                <p>222</p>
                <p>222</p>
                <p>222</p>
            </div>
        </div>
           <div class="item">
            <div class="title" onclick=fool(this)>菜单三</div>
            <div class="con hide">
                <p>333</p>
                <p>333</p>
                <p>333</p>
            </div>
        </div>
    </div>
    <div class="right"></div>
    <script>
        function fool(self) {
            self.nextElementSibling.classList.remove("hide");
            var ele_title=document.getElementsByClassName("title");
            for (var i=0;i<ele_title.length;i++){
                if(ele_title[i]!=self){
                    ele_title[i].nextElementSibling.classList.add("hide");
                }
            }
        }
    </script>
    </body>
    </html>

      方式二:通过如下形式:“标签对象.事件类型=function(){}”,绑定事件,触动事件时执行function函数,应用实例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <ul>
        <li class="item">111</li>
        <li class="item">222</li>
        <li class="item">333</li>
    </ul>
    <script>
        var ele=document.getElementsByClassName("item");
        for (var i=0;i<ele.length;i++){
            ele[i].onclick=function() {
                alert(this.innerText)                               //this不可以使用ele[i]代替,for循环只是完成了事件的绑定,并未触动事件,当抽动事件的时候i=3
            }
        }
    </script>
    </body>
    </html>
  • 相关阅读:
    同步的原则
    我心中的final
    令人"哇"的内部类(一)内部类的设计意义
    令人"哇"的内部类(三)嵌套类
    共享资源问题的解决方案(一)加锁机制
    令人"哇"的内部类(二 )内部类访问外围类
    volatile关键字
    同步控制块
    高质量C++/C 编程指南一
    5、数据表的创建与更新(续)
  • 原文地址:https://www.cnblogs.com/seven-007/p/7816328.html
Copyright © 2020-2023  润新知