目录
  • 1. dom节点
    • 1.1 dom节点获取
    • 1.2 节点元素层级关系
    • 1.3 修改_清空内容
    • 1.4 隐藏显示密码效果
  • 2. 全选_反选_不选
    • 2.1 全选_反选_不选
    • 2.2 js控制css的相关属性
    • 2.3 js事件
  • 3. 模态框

    1. dom节点

    1.1 dom节点获取

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>dom document object model 文档顶级节点</title>
    </head>
    <body>
        <div id="box">
            <p class="p1" >张三</p>
            <p class="p2">李四</p>
            <p class="p3">赵刘</p>
            <p name="ceshi1"></p>
            <p name="ceshi1"></p>
        </div>
        <div>
            <input type="text" name="username" />
            <input type="password" name="pwd" />
            <p1>112233</p1>
            <box>55666</box>
        </div>
        <script>
            console.log(document)
            // ### 1 通过id获取div节点对象
            var box = document.getelementbyid("box");
            console.log(box);
            // ### 2 通过类名获取节点对象 [返回的是数组]
            var p2 = document.getelementsbyclassname("p2");
            console.log(p2 , typeof(p2));
            // 获取李四节点对象
            lisi = p2[0];
            console.log(lisi)
            // 获取王五节点对象
            wangwu = p2[1];
            console.log(wangwu);
            // ### 3.通过标签获取节点对象 [返回的是数组]
            var p = document.getelementsbytagname("p");
            console.log(p)
            console.log(p[1])
            // ### 4.通过标签身上的name属性 [返回的是数组] 一般用在input表单中
            var ceshi1 = document.getelementsbyname("username")[0];
            console.log(ceshi1);
    
            // ### 通过css选择器获取对应的元素节点        
            // ### 5.queryselector ,只获取找到的第一个;
            var p1 = document.queryselector(".p1");
            console.log(p1)
            var box = document.queryselector("#box");
            console.log(box)
            // input表单有两个,但是只获取第一个;
            var input = document.queryselector("input");
            console.log(input);
            // ### 6.queryselectorall 获取所有找到的元素节点,返回数组
            var all = document.queryselectorall("input[name=username]")[0];
            console.log(all);
    
        </script>
    </body>
    </html>
    

    1.2 节点元素层级关系

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>节点元素层级关系</title>
    </head>
    <body>
        <div id="box">
            <p>
                <input type="text" name="username" />
                <input type="password" name="pwd" />
            </p>
            <p class="p1" >张三</p>
            <p class="p2">李四</p>
            <p class="p3">赵刘</p>
            <p name="ceshi1"></p>
            <p name="ceshi1"></p>
        </div>
        <script>
            // ### 获取对应的节点元素
            console.log(document)
            console.log(document.documentelement); // html
            console.log(document.documentelement.children) 
            // 找html里面所有的子节点children
            var html_children = document.documentelement.children
            console.log(html_children) // head , body
            body = html_children[1];
            console.log(body); // head , body
            var div = body.children[0]
            console.log(div);
            var p0 = div.children[0]
            console.log(p0)
            var input = p0.children
            console.log(input)
            var input1 = input[0]
            console.log(input1)
            // 获取下一个节点对象nextsibling
            console.log(input1.nextsibling.nextsibling);
            // 获取下一个元素节点对象 nextelementsibling
            var input2 = input1.nextelementsibling;
            console.log(input2);
            // 获取上一个节点对象 previoussibling
            console.log(input2.previoussibling)
            // 获取上一个元素节点对象 previouselementsibling
            console.log(input2.previouselementsibling)
            // 获取input2父节点元素对象;
            console.log(input2.parentelement)
        </script>
    </body>
    </html>
    

    1.3 修改_清空内容

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>dom 修改/清空内容</title>
    </head>
    <body>
        <button onclick="func1()">修改内容</button>
        <button onclick="func2()">清空内容</button>
        <div id="box" style="border:solid 1px red;">
            <p>我是最帅的最有钱的<a href="#">最有味的</a>男人</p>
        </div>
        <script>
            // innerhtml 获取标签里面所有内容 [标签 + 文本]
            // innertext 获取标签里面所有字符串[文本]
            var p = document.queryselector("#box p");
            // console.log把数据展现在控制台
            console.log(p);
            // document.write 把数据以字符串的形式展现在浏览器
            document.write(p);
            // 点击button1触发如下任务 , 修改
            function func1(){
                var content = p.innerhtml;
                var content = p.innertext;
                console.log(content);
                // p.innerhtml = `我被修改了 <a href=''>点我中大奖</a>...1`;
                p.innertext = `我被修改了 <a href=''>点我中大奖</a>...2`;
            }
            // 点击button2触发如下任务 , 清空
            function func2(){
                p.innerhtml = '';
            }
    
        </script>
    </body>
    </html>
    

    1.4 隐藏显示密码效果

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>隐藏显示密码效果</title>
    </head>
    <body>
        <input type="password" name="pwd" value="111" class="abcd" /> <button onclick="change()" id="btn" >点我显示密码</button>
        <div>
            <img src="images/oneal1.jpg" />
        </div>
        
        <script>
            // 效果1: 显示隐藏密码
            var password = document.queryselector("input[name=pwd]")
            console.log(password);
            console.log(password.type);
            console.log(password.name);
            console.log(password.value); 
            console.log(password.classname)
            function change(){
                var btn = document.queryselector("#btn")
                console.log(btn);
                if(password.type=="password"){
                    password.type = "text";
                    btn.innerhtml = "点我隐藏密码";
                }else{
                    password.type= "password";
                    btn.innerhtml = "点我显示密码";
                }
            }
            // 效果2:点击换图片
            var img = document.queryselector("img");
            console.log(img)
            img.onclick = function(){
                console.log(img.src) // http://127.0.0.1:5500/images/oneal1.jpg
                var arr = img.src.split("/")
                imgname = arr[arr.length - 1]
                console.log(arr , imgname);
                if(imgname == "oneal1.jpg"){
                    img.src = "images/bakeli.jpg";
                }else{
                    img.src = "images/oneal1.jpg";
                }
            }
        </script>
    </body>
    </html>![请添加图片描述](https://img-blog.csdnimg.cn/28488ad590884492b9b9aabe1e7eeada.png?x-oss-process=image/watermark,type_d3f5lxplbmhlaq,shadow_50,text_q1netiba54as5asc5roh5p645p2e,size_20,color_ffffff,t_70,g_se,x_16)
    

    2. 全选_反选_不选

    2.1 全选_反选_不选

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>全选,反选,不选</title>
        <style>
            *
            {margin:0px;padding:0px;}
            ul
            {list-style: none;}
            #ul1 li
            {float:left;}
            #ul1 li button
            {width:80px;height:30px;}
            #ul1 li button:hover
            {background-color: tan;}
            #ul2
            {clear:both;}
        </style>
    </head>
    <body>
        <ul id="ul1">
            <li><button>全选</button></li>        
            <li><button>不选</button></li>
            <li><button>反选</button></li>
        </ul>
        <ul id="ul2">
            <li><input type="checkbox"  /> 看电影 </li>
            <li><input type="checkbox" /> 吃面 </li>
            <li><input type="checkbox" /> 烫头 </li>
            <li><input type="checkbox" /> 跑步 </li>
            <li><input type="checkbox" /> 篮球 </li>
        </ul>
        <script>
            // 获取btn节点对象
            var btn1 = document.queryselector("#ul1 li:nth-child(1) button");
            var btn2 = document.queryselector("#ul1 li:nth-child(2) button");
            var btn3 = document.queryselector("#ul1 li:nth-child(3) button");
            // 全选
            btn1.onclick = function(){
                // 获取#ul2 li 里的input
                /*
                    var data_lst = document.getelementbyid("ul2").getelementsbytagname("input");
                    console.log(data_lst)
                */
                var data_lst = document.queryselectorall("#ul2 li input");
                console.log(data_lst)
                // 获取数组当中每一个input节点元素对象
                for(var input of data_lst){
                    //console.log(input.checked)
                    // 设置节点input的checked属性为true;
                    input.checked = true;                
                }
            }
            // 不选
            btn2.onclick = function(){
                var data_lst = document.queryselectorall("#ul2 li input");
                console.log(data_lst)
                // 获取数组当中每一个input节点元素对象
                for(var input of data_lst){
                    //console.log(input.checked)
                    // 设置节点input的checked属性为true;
                    input.checked = false;                
                }
            }
            // 反选
            btn3.onclick = function(){
                var data_lst = document.queryselectorall("#ul2 li input");
                console.log(data_lst)
                // 获取数组当中每一个input节点元素对象
                for(var input of data_lst){
                    if(input.checked === true){
                        input.checked = false;
                    }else{
                        input.checked = true;
                    }
                }
            }
        </script>
    
    </body>
    </html>
    

    2.2 js控制css的相关属性

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>js控制css的相关属性</title>
        <style>
            .box
            {border:solid 1px red;}
            .box_new
            {position: absolute; left:200px;}
        </style>
    </head>
    <body>
        <button id="box1">点击我换颜色</button>
        <button id="box2">点击我隐藏</button>
        <button id="box3">点击我显示</button>
        <button id="box4">点击边框换圆角</button>
        <button id="box5">点击加样式</button>
        <div class="box" style="width:300px;height:200px;background-color: yellow;font-size:40px;">你好评</div>
       <script>
            var box = document.queryselector(".box");
            console.log(box);
            // js的dom对象获取相关的css属性
            // 获取方法一
            console.log(box.style.width);
            console.log(box.style.backgroundcolor);
            // 获取方法二
            console.log(box.style["width"]);
            console.log(box.style["background-color"]);
            console.log(box.style["font-size"]);
            // 获取方法三 getcomputedstyle 获取该节点对象的所有样式
           console.log( window.getcomputedstyle(box)["font-size"] , "<===getcomputedstyle===>");
           console.log( window.getcomputedstyle(box).fontsize , "<===getcomputedstyle===>");
            // 事件绑定
           var box1 = document.getelementbyid("box1");
           var box2 = document.getelementbyid("box2");
           var box3 = document.getelementbyid("box3");
           var box4 = document.getelementbyid("box4");
           var box5 = document.getelementbyid("box5");
           box1.onclick = function(){
                box.style.backgroundcolor = "red";
           }
           box2.onclick = function(){
                box.style.display = "none";
           }
           box3.onclick = function(){
                box.style.display = "block";
           }
           box4.onclick = function(){
                //box.style.borderradius = "100%";
                var point = 0;
                var t = setinterval( function(){
                    box.style.borderradius = `${point}%`;
                    if(point < 100){
                        point++;
                    }else{
                        clearinterval(t)
                        console.log("结束了... ")
                    }
                } , 50)
            }
            /* 重点 添加样式*/
            box5.onclick = function(){
                // box.classname = "box box_new";
                box.classname += " box_new";
            }
        </script>
    </body>
    </html>
    

    2.3 js事件

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>js事件</title>
        <style>
            *{margin:0px;padding:0px;}
            .box
            {width:100px;height:100px;background: green;position: absolute;left:0px;}
        </style>
    </head>
    <body>
        <!-- 1.事件的静态绑定 -->
        <button onclick="func1()">按钮1</button>
        <div class="box"></div>
        <script>
            var box = document.getelementsbyclassname("box")[0];
            var t;
            console.log(box);
            function func1(){
                var left = parseint(window.getcomputedstyle(box).left)
                console.log(left ,typeof(left));
                // console.log(box.style.left);
                t = setinterval(function(){
                    left += 10;
                    box.style.left  = `${left}px`;
                } , 50)
            } 
            
            // 2.事件的动态绑定 
            // onmouseover 鼠标指针悬停在指定元素上时触发
            box.onmouseover = function(){
                clearinterval(t);
            }
            // onmouseout  鼠标指针离开指定元素时触发
            box.onmouseout = function(){
                func1()
            }
        </script>
    </body>
    </html>
    

    3. 模态框

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>模态框</title>
        <style>
            .box {
                position:fixed;
                width:100%;
                height:100%;
                top:0px;
                background-color: greenyellow;
                display: none;
            }
            .content
            {            
                border:solid 1px red;
                width:500px;
                height:500px;
                background-color:tan;
                margin:auto;
                margin-top:14%;        
            }
        </style>
    </head>
    <body>
        <button id="login">登录</button>
        <div class="box">
            <div class="content" >
                <span class="close">x</span>
                <br />
                <span>账号: <input type="text"  /></span>
                <br / >
                <span>密码: <input type="password"  /></span>
            </div>
        </div>
        <script>
            var btn = document.getelementbyid("login");
            var box = document.queryselector(".box");
            var close = document.queryselector(".close");
            btn.onclick = function(){
                console.log(11)
                box.style.display = "block";
            }
            close.onclick = function(){
                box.style.display = "none";
            }
    
        </script>
    </body>
    </html>