js的dom学习笔记(2day)

1.操作元素

getElementsById querySelector

练习:分时显示不同图片

<!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>
    <style>
        img{
            width: 300px;

        }
    </style>
</head>
<body>
    <!-- 分时显示不同图片,显示不同问候语 -->
    <img src="1.jpg" alt="">
    <div>上午好</div>
    <script>
        //1.获取元素
        var img=document.querySelector('img');
        var div=document.querySelector('div');
        //2.得到当前的小时数
        var date=new Date();
        var h=date.getHours();
        //2.判断小时数改变图片和文字信息
        if(h<12){
            img.src='1.jpg';
            div.innerHTML='上午好';
        }
        else if(h<18){
            img.src='2.jpg';
            div.innerHTML='下午好';
        }
        else {
            img.src='3.jpg';
            div.innerHTML='晚上好';
        }

    </script>
    
    
</body>
</html>

会根据 getHours得到的事件进行判断,显示不同的提示

注意:date要进行new Date

2.表单操作元素又不相同,一般是通过value来进行修改,如input.value='点击';  btn.disabled=true;

练习:京东显示密码

<!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>
    <style>
        .box{
            /* 子绝父相 */
            position: relative;
            width: 400px;
            border-bottom: 1px solid #ccc;
            margin: 100px auto;
        }
        .box input{
            width: 370px;
            height: 30px;
            border: 0;
            outline: none;
        }
        .box img{
            position: absolute;
            top: -2px;
            right: -2px;
            width: 48px;

        }
    </style>
</head>
<body>
    <!-- 案例:仿京东显示密码
    点击按钮将密码框切换成文本框,并可以查看密码明文 -->
    <div class="box">
        <label for="">
            <img src="close.jpg" alt="" id="eye">
        </label>
        <input type="password" name="" id="pwd">
    </div>
    <script>
        //1.获取元素
        var eye=document.getElementById('eye');
        var pwd=document.getElementById('pwd');
        //2.注册事件 处理程序
        var flag=0;
        eye.onclick=function(){
            //重点:点击一次,flag一定要变化
            if(flag==0){
                pwd.type='text';
                eye.src='open.jpg';
                flag=1;
            }else{
                pwd.type='password';
                eye.src='close.jpg';
                flag=0;
            }
            
        }
        //算法:利用一个flag变量来判断flag的值,如果是1切换成文本框,如果是0就是密码框

    </script>
    
</body>
</html>

 

注意:如果想要文本框和密码框进行切换,要用flag进行判断,但是在判断后要将flag进行赋值

练习:淘宝页面的显示和隐藏

<!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>
    <style>
        .box{
            /* 子绝父相 */
            position: relative;
            width: 74px;
            height: 88px;
            border: 1px solid #ccc;
            margin: 100px auto;
            font-size: 12px;
            text-align: center;
            color: #f40;
            display: block;
        }
        .box img{
            width: 60px;
            margin-top: 5px;
        }
        .close-btn{
            position: absolute;
            top:-1px;
            left: -16px;
            width: 14px;
            height: 14px;
            border: 1px solid #ccc;
            line-height: 14px;
            font-family: Arial,Helvetica,sans-serif;
            /* 鼠标形状设置 */
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="box">
        淘宝二维码
        <img src="taobao1.jpg" alt="">
        <i class="close-btn">×</i>
    </div>
    <script>
        //1.获取元素
        var btn=document.querySelector('.close-btn');
        var box=document.querySelector('.box');
        //2.注册事件 程序处理
        btn.onclick=function(){
            box.style.display='none';
        }
    </script>
    
</body>
</html>

注意:box.style.display='none';这里的display是隐藏显示的意思

练习:精灵图

<!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>
    <style>
        .box{
            width: 250px;
            margin: 100px auto;
        }
        .box li{
            float: left;
            width: 24px;
            height: 24px;
            background-color: pink;
            margin: 15px;
            background: url(taobao2.png) no-repeat;
            /* 去除无序列表上的点 */
            list-style: none;
        }
    </style>
</head>
<body>
    <!-- 可以利用for循环设置一组元素的精灵背景 -->
    <div class="box">
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        //1.获取元素
        var lis=document.querySelectorAll('li');
        for(var i=0;i<lis.length;i++){
            //Position'x轴坐标 y轴坐标'
            //让索引号*44 就是每个li背景y坐标
            //index就是y坐标
            var index=i*44;
            //这里的算法一定要注意
            lis[i].style.backgroundPosition='0 -'+index+'px';
        }
    </script>
</body>
</html>

注意:这里加入图片是循环进行

lis[i].style.backgroundPosition='0 -'+index+'px';

3.显示隐藏文本框 获得焦点onfocus 失去焦点onblur

<!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>
    <style>
        input{
            color: #999;
        }
    </style>
</head>
<body>
    <!-- 案例:显示隐藏文本框内容
               当鼠标点击文本框,里面默认文字隐藏,当鼠标离开文本框,里面文字显示
        1.表单需要两个事件,获得焦点onfocus 失去焦点onblur
        2.如果获得了焦点,判断表单里面的内容是否是默认文字,如果是默认文字,就清空表单内容
        3.如果失去焦点,判断表单内容是否为空,如果为空,则表单内容改为默认文字 -->
    <input type="text" value="手机">
    <script>
        //1.获取元素
        var text=document.querySelector('input');
        //2.注册事件 获得焦点事件onfocue
        text.onfocus=function(){
            if(text.value==='手机'){
                text.value='';
            }
            //获得焦点需要把文本框里面文字颜色变黑
            text.style.color='#333';
        }
        //3.注册事件 失去焦点事件onblur
        text.onblur=function(){
            if(text.value===''){
                text.value='手机';
            }
            //失去焦点需要把文本框里面的文字颜色变浅
            text.style.color="#999";
        }
    </script>
    
</body>
</html>

4.通过修改元素的className更改元素的样式,适合样式较多或功能复杂的情况,

如果想要保留原先类型.这就是多类名选择器 test.className='first change';

练习:密码框提示错误

<!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>
    <style>
        div{
            width: 600px;
            margin: 100px auto;
        }
        .message{
            display: inline-block;
            font-size: 12px;
            color: #999;
            background:url(1.4.1.png) no-repeat left center ;
            /* 给background设置宽度高度,background-size:宽度 高度; */
            background-size: 20px 20px;
            padding-left: 20px;
        }
        .wrong{
            color: red;
            background: url(1.4.2.png) no-repeat left center;
            background-size: 20px 20px;
        }
        .right{
            color: green;
            background: url(1.4.1.png) no-repeat left center;
            background-size: 20px 20px;
        }

    </style>
</head>
<body>
    <!-- 1.判断事件是表单失去焦点onblur
         2.如果输入正确则提示正确的信息颜色为绿色小图标变化
         3.如果输入不是6-16位,则提示错误信息颜色为红色小图标变化
         4.因为变化样式较多,采用className修改样式 -->
    <div class="register">
        <input type="password" name="" class="ipt">
        <p class="message ">请输入6-16位密码</p>
    </div>
    <script>
        //1.获取元素
        var ipt=document.querySelector('.ipt');
        var message=document.querySelector('.message');
        //2.注册事件 失去焦点
        ipt.onblur=function(){
            //根据表单里面值的长度ipt.value.length
            if(ipt.value.length<6||ipt.value.length>16){
                message.className='message wrong';
                message.innerHTML='输入位数不对';
            }else{
                message.className='message right';
                message.innerHTML='输入正确';

            }

        }

    </script>
    
</body>
</html>

 

 

 注意:给background设置宽度高度,background-size:宽度

           变化样式较多,采用className修改样式

           失去焦点的时候要注意className

总结:还是要多加练习,明日接着加油!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值