欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python全栈之学习JS(3)

程序员文章站 2022-03-07 14:33:30
目录1. dom节点1.1 dom节点获取1.2 节点元素层级关系1.3 修改_清空内容1.4 隐藏显示密码效果2. 全选_反选_不选2.1 全选_反选_不选2.2 js控制css的相关属性2.3 j...

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>
相关标签: Python 全栈 JS