开发者

Python全栈之学习JS(3)

目录
  • 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("usewww.cppcns.comrname")[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://www.qedev.com/res/2022/03-30/22/n10yna3lxkc.jpg?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>全选</buttowww.cppcns.comn></li>        
            <li><button>不选</button></li>
            <li><button>反选</button></li>
        </ul>
        <ul id="ul2">
            <li><input type="checkbox"  /> 看电影 </li>
        qnHoZVo    <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">点击我换颜色</buttonqnHoZVo>
        <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;
                backgrouhttp://www.cppcns.comnd-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>
    

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜