zoukankan      html  css  js  c++  java
  • js获取标签的三种方式

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                ul li{
                    color: black;
                }
                ul li.active{
                    color: red;
                }
            </style>
        </head>
        <body>
            <div id="box">MJJ</div>
            <ul id="box2">
                <li class="active">1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
            </ul>
            <script type="text/javascript">
                // 1.通过id获取单个节点对象
                var box = document.getElementById('box');
                console.log(box);
                console.dir(box);
                // // 2.通过标签名来获取节点对象
                // var box2 = document.getElementsByTagName('div');
                // console.log(box2);
                // var lis = document.getElementsByTagName('li');
                // for(var i = 0; i < lis.length; i++){
                //     // lis[i].className = 'active';
                //     lis[i].onclick = function(){
                //         // this指向了绑定onclick的那个对象
                //         // 排他思想
                //         for(var j = 0; j < lis.length; j++){
                //             lis[j].className = '';
                //         };
                //         this.className = 'active';
                //     }
                // }
                // // 3.通过类名获取
                // var lis2 = document.getElementsByClassName('active');
                // // console.log(lis2);
                // // var box = document.getElementById('box2');
                // // console.log(box.children);
            </script>
        </body>
    </html>

     1、通过id获取

    1.1

    1.2

    var box = document.getElementById('box');
    console.log(box);

    1.3、console.dir(box)

    2、通过标签名来获取节点对象

    2.1
    // // 2.通过标签名来获取节点对象
    var box2 = document.getElementsByTagName('div');
    console.log(box2);

    2.2、实现点击哪个li,哪个li变成红色,其它不红。

                var box2 = document.getElementsByTagName('div');
                // console.log(box2);
                var lis = document.getElementsByTagName('li'); //lis数组
                for(var i = 0; i < lis.length; i++){
                    // lis[i].className = 'active';
                    lis[i].onclick = function(){
                        // this指向了绑定onclick的那个对象
                        // 排他思想
                        for(var j = 0; j < lis.length; j++){
                            lis[j].className = '';
                        };
                        this.className = 'active';
                    }
                }

    通过获取元素通过tag名字获得是这个标签的数组。

    console.log(lis);

    实现点击哪个li,哪个li变成红色,其它不红。

         for(var i = 0; i < lis.length; i++){
                    // lis[i].className = 'active';
                    lis[i].onclick = function(){
                        // this指向了绑定onclick的那个对象
                        // 排他思想
                        for(var j = 0; j < lis.length; j++){
                            lis[j].className = '';
                        };
                        this.className = 'active';

    1)获取所有指定标签元素,是个数组(好像是伪数组把??)   #document.getElementsByTagName('li')

    2)循环数组元素。点击某个标签之后先将所有的标签class设置为空字符串。  # lis[j].className = ''

    3)再给点击到的标签添加类名   #this.className = 'active';

    4)类名是有设置了css样式的。红色color值 

    5)点击之后的操作是onclick事件。给循环的每个数组元素绑定事件。 #  lis[i].onclick = function(){};

    6)给每个数组元素.onclick绑定事件,需要for循环遍历数组。事件是执行=的匿名函数function(){},将所有的这个li标签去掉类名,再加个有红色属性的类名,这样实现点击谁只有谁有这个类,只有这个标签变红。将所有li标签去掉类名就是在函数中再for循环数组对每个元素类名设置为空字符串

    7)如果没有第2步,那么选中之后的标签不会变回黑色,标签不会只是单个变红

    
    


    2.3、
                var box2 = document.getElementsByTagName('div');
                // console.log(box2);
                var lis = document.getElementsByTagName('li');
                console.log(lis);
                for(var i = 0; i < lis.length; i++){
                    // lis[i].className = 'active';
                    lis[i].onclick = function(){
                        // this指向了绑定onclick的那个对象
                        // 排他思想
                        for(var j = 0; j < lis.length; j++){
                            lis[j].className = '';
                        };
                        this.className = 'active';
                        console.log(this);
                        console.log(typeof lis[i]);
                        console.log(lis[i]);
                    }
                }

    点击li 2 2变红,点击3 3变红 。打印this是每个li标签对象,是单个数组元素。 打印数组每个元素lis[i]类型是未定义,元素是未定义。

    点击时可查看到对应的class在变化:

    3、通过类名获取

    3.1、

    var lis2 = document.getElementsByClassName('active');
    console.log(lis2);

    4、获取所有子孩子对象     父对象.children

                var box = document.getElementById('box2');
                cd=box.children
                console.log(cd);
                for(var i = 0; i < cd.length; i++){
                    console.log(i,cd[i])
                }

     
    #注意 console.log(i,cd[i])可以打印多个元素
  • 相关阅读:
    局部 与 整体 修正 逐渐逼近
    en-zh(社会问题)social problems
    单调性 [1 + 1 / (n)]^n
    en-zh(科学技术)science and technology
    mysql函数之截取字符串
    看数据库的文件大小 MySQL Binlog日志的生成和清理规则
    Brouwer不动点
    布尔巴基学派
    量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html
    COMSOL
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/10975912.html
Copyright © 2011-2022 走看看