dom查询

作者: 冰点雨 | 来源:发表于2022-07-17 22:19 被阅读0次

    1.dom查询

    var html = document.documentElement;

    var body = document.body;

    // 页面中的所有元素
    var all = document.all;

    document.getElementsByClassName("box");

    querySelector()
    需要一个选择器的字符串作为参数,可根据一个css选择器来获取一个元素节点对象
    使用该方法返回唯一一个元素,如果满足条件的元素有多个,那么它只会返回第一个

    document.querySelector(".box div");
    

    querySelectorAll() 和querySelector()用法类似,返回元素数组

      var boxs = document.querySelectorAll("box");
                console.log(boxs.length);//3
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script>
            window.onload = function(){
                var html =  document.documentElement;
                var body = document.body;
                // 页面中的所有元素
                var all = document.all;
    
                var box = document.getElementsByClassName("box");
    
                // 获取页面中所有div
                var divs = document.getElementsByClassName("div");
    
                /* 
                querySelector()
                需要一个选择器的字符串作为参数,可根据一个css选择器来获取一个元素节点对象
                 使用该方法返回唯一一个元素,如果满足条件的元素有多个,那么它只会返回第一个
                */
                var div = document.querySelector(".box div");
    
                /* 
                querySelectorAll()
                和querySelector()用法类似,返回元素数组
                */
                var boxs = document.querySelectorAll("box");
                console.log(boxs.length);//3
            }
        </script>
    </head>
    <body>
        <div class="box">
           <div></div>
        </div>
        <div class="box">
            <div></div>
         </div>
         <div class="box">
            <div></div>
         </div>
    </body>
    </html>
    

    getElementById("bj") // 查找#bj节点

    innerHtml 通过这个可以获取元素内部的HTML代码

    getElementsByTagName("li") 查找所有li节点

    childNodes属性会获取包括文本节点在内的所有节点
    根据DOM标签 标签间空白也会当成文本节点
    注意:在IE8及以下的浏览器中,不会将空白文本当成子节点
    所以属性在IE8会返回4个元素而其他浏览器是9个

    firstChild()获取当前元素的第一个子节点(包括空格)
    firstElementChild()获取第一个子元素(不包含空格) 不支持IE8
    lastChild() 获取当前元素的最后一个子节点(包括空格)

    bj.parentNode;获取父节点

    innerText
    —— 该属性可以获取到元素内容
    —— 和innerHTML类似,不同:会将HTML去掉

    ad.previousSibling查找前一个兄弟节点
    previousElementSibling获取前一个兄弟元素,不包含空格 IE8及以下不支持

    WeChat91f0bd15d25c7ec076e0261bed8ecc7a.png
    WeChat5a9b853f6e54cfbda80e4e3af6d531e6.png
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script>
            function myClick(idStr,fun){
                var btn = document.getElementById(idStr);
                btn.onclick = fun;
            };
    
    
    
            window.onload = function(){
    
                
                var btn1 = document.getElementById("btn1");
                btn1.onclick = function(){
                    // 查找#bj节点
                    var  bj = document.getElementById("bj");
                    // innerHtml 通过这个可以获取元素内部的HTML代码
                    alert(bj.innerHTML);
                };
    
    
                
                var btn2 = document.getElementById("btn2");
                btn2.onclick = function(){
                    // 查找所有li节点
                    var  lis = document.getElementsByTagName("li");
                    // getElementsByTagName()根据标签名来获取一组节点元素对象,封装在类数组中
                    for(var i=0;i < lis.length;i++){
                        alert(lis[i].innerHTML);
                    }
                };
    
                
                var btn3 = document.getElementById("btn3");
                btn3.onclick = function(){
                    // 查找name=sex的所有节点
                    var  inputs = document.getElementsByName("sex");
                    for(var i=0;i < inputs.length;i++){
                        /* 
                        innerHtml 取元素HTML内容,用于自结束标签
                         */
                        /* 
                        如果需要读取元素节点属性:
                          元素.属性名
                          例:元素.id  元素.name   元素.value
                          读取class 元素.className
                         */
                        alert(inputs[i].value);
                    }
                };
    
                
                var btn4 = document.getElementById("btn4");
                btn4.onclick = function(){
                    var  city = document.getElementById("city");
                    // 查找#city下所有li节点
                    var  lis = city.getElementsByTagName("li");
                    for(var i=0;i < lis.length;i++){
                        alert(lis[i].innerHTML);
                    }
                };
    
                
                var btn5 = document.getElementById("btn5");
                btn5.onclick = function(){
                    var  city = document.getElementById("city");
                    // 查找#city下所有子节点
                    /* 
                    childNodes属性会获取包括文本节点在内的所有节点
                    根据DOM标签 标签间空白也会当成文本节点
                    注意:在IE8及以下的浏览器中,不会将空白文本当成子节点
                         所以属性在IE8会返回4个元素而其他浏览器是9个
                     */
                    var  cns = city.childNodes;
                    // children 获取当前元素的所有子元素  
                    var cns2 = city.children;//4
    
                };
    
    
    
                
                var btn6 = document.getElementById("btn6");
                btn6.onclick = function(){
                    var  phone = document.getElementById("phone");
                    // 查找#phone的第一个子节点
                    
                    /* 
                    firstChild()获取当前元素的第一个子节点(包括空格)
                    firstElementChild()获取第一个子元素(不包含空格) 不支持IE8
                     */
                    // 
                    var  first = phone.firstChild;
                    // lastChild() 获取当前元素的最后一个子节点(包括空格)
                    var last = phone.lastChild;
    
                };
    
                
                myClick("btn7",function(){
                    var  bj = document.getElementById("bj");
                    // 查找#bj的父节点
                    var pn = bj.parentNode;
                    // alert(pn.innerHTML);
    
                    /* 
                    innerText
                      —— 该属性可以获取到元素内容
                      —— 和innerHTML类似,不同:会将HTML去掉
                     */
                    alert(pn.innerText);
                });
    
    
                
                myClick("btn8",function(){
                    var  ad = document.getElementById("andriod");
                    // 查找#android的前一个兄弟节点
                    var ps = ad.previousSibling;
    
                    // previousElementSibling获取前一个兄弟元素,不包含空格 IE8及以下不支持
                    var ps1 = ad.previousElementSibling;
                    
                    alert(ps);
                });
    
                // 查找#username的value属性值
                myClick("btn9",function(){
                    var  username = document.getElementById("username");
                    alert(username.value);
                });
    
                // 设置#username的value属性值
                myClick("btn10",function(){
                    var  username = document.getElementById("username");
                    username.value = "你好啊";
                });
    
                // 返回#bj的文本值
                myClick("btn11",function(){
                    var  bj = document.getElementById("bj"); 
                    // alert(bj.innerHTML);
                    // alert(bj.innerText);
    
                    var fir = bj.firstChild;
                    alert(fir.nodeValue);
                });
            };
        </script>
    </head>
    <body>
        <div id="total">
            <div class="inner">
                <p>你喜欢哪个城市?</p>
                <ul id="city">
                    <li id="bj">北京</li>
                    <li>上海</li>
                    <li>天津</li>
                    <li>南京</li>
                </ul>
    
                <br>
    
                <p>你喜欢哪个游戏?</p>
                <ul id="game">
                    <li>王者荣耀</li>
                    <li>红警</li>
                    <li>QQ飞车</li>
                </ul>
    
                <br>
    
                <p>你手机的系统是?</p>
                <ul id="phone">
                    <li>iOS</li>
                    <li id="andriod">安卓</li>
                    <li>Windows iPhone</li>
                </ul>
            </div>
    
            <div class="inner">
                性别:
                <input type="radio" name="sex" value="boy">
                男
                <input type="radio" name="sex" value="girl">
                女
                <br>
                名字:
                <input type="text" name="name" id="username" value="小花">
            </div>
    
            <div id="btnList"> 
                 <div><button id="btn1">查找#bj节点</button></div>
                 <div><button id="btn2">查找所有li节点</button></div>
                 <div><button id="btn3">查找name=sex的所有节点</button></div>
                 <div><button id="btn4">查找#city下所有li节点</button></div>
                 <div><button id="btn5">查找#city下所有子节点</button></div>
                 <div><button id="btn6">查找#phone的第一个子节点</button></div>
                 <div><button id="btn7">查找#bj的父节点</button></div>
                 <div><button id="btn8">查找#android的前一个兄弟节点</button></div>
                 <div><button id="btn9">查找#username的value属性值</button></div>
                 <div><button id="btn10">设置#username的value属性值</button></div>
                 <div><button id="btn11">返回#bj的文本值</button></div>
            </div>
    
        </div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:dom查询

          本文链接:https://www.haomeiwen.com/subject/cuhnbrtx.html