【18.0】JavaScript---事件案例

【18.0】JavaScript—事件案例

【一】开关灯事件

  • 【介绍】设置一个按钮,按下按钮触发事件,来回切换圆形图片的颜色

  • 【分析】

    • 图片设置:设置成圆形的图片
    • 背景颜色:设置红绿两个颜色,来回切换
    • 按钮设置:点击按钮触发事件,事件为切换背景颜色
  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>开关灯事件</title>
        <style>
        /*设置图片*/
        .c1{
            height:200px;
            width:200px;
            border-radius: 50%;
        }
        .bd_green{
            background-color: green;
        }
        .bd_red{
                background-color: red;
            }
        </style>
    </head>
    <body>
     <!--设置背景图片-->
    <div id="bg_picture"  class="c1 bd_green bd_red">
    
    </div>
    <!--按钮-->
    <button id="button1">点击按钮变色</button>
    
    <!--配置变色事件-->
    <script>
        //找到按钮标签
        let btnEle=document.getElementById("button1")
        //找到图片标签
        let picEle=document.getElementById("bg_picture")
        //为按钮绑定图片进行触发
        btnEle.onclick=function(){
            //动态修改图片属性,toggle有则删除,无则添加(实现切换)
            picEle.classList.toggle("bd_red")
        }
    </script>
    
    </body>
    </html>
    

【二】input框获取/失去焦点

  • 【焦点概念】

    • 获得和失去焦点是鼠标行为,现在有一个输入框,当鼠标放在输入框点击的时候,就是在获得焦点,当鼠标移走到其他输入框或区域,无法编辑,就是失去焦点
  • 【分析】

    • 获得焦点:是在收集信息,我们需要将收集的信息储存起来
    • 失去焦点:无法收集到用户的信息,可以给一个默认值
  • 【效果】

    • 如果点击输入框输入内容 没异常
    • 如果点击输入框并且没输入 鼠标移走会显示我们提前准备的默认内容
  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>焦点事件</title>
    </head>
    <body>
        <!--定义输入框-->
    <input type="text" value="您的姓名" id="d1">
    
    <script>
        //获得输入框标签
        let inpEle=document.getElementById('d1');
        //将输入框标签变成 获得焦点事件
        inpEle.onfocus=function(){
            inpEle.value="";
        }
        //将输入框变成 失去焦点事件
        inpEle.onblur=function(){
            inpEle.value="没输入";
        }
    </script>
    
    </body>
    </html>
    

【三】实时展示当前时间

【1.0】基础版

  • 【分析】

    • 设置一个框框
    • 将时间事件绑定到框中,触发后自动将时间填入框中
    • 【问题】只能展示打开这一刻的时间
  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>时间事件</title>
    </head>
    <body>
        <!--定义输入框-->
    <input type="text" id="d1">
    
    <script>
        //获得输入框标签
        let inpEle=document.getElementById('d1');
        //设置自动填充时间功能
        (function showtime(){
            //找到当前时间
            let currentTime=new Date()
            //填入到框里
            inpEle.value=currentTime.toString();
        })()
    
    </script>
    
    </body>
    </html>
    

【2.0】动态访问时间

  • 【分析】通过时间计时器,设置动态的触发事件,可以设置每个一秒就触发函数,更新时间

  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>时间事件</title>
    </head>
    <body>
        <!--定义输入框-->
    <input type="text" id="d1">
    
    <script>
        //获得输入框标签
        let inpEle=document.getElementById('d1');
        //设置自动填充时间功能
        function showtime(){
            //找到当前时间
            let currentTime=new Date()
            //填入到框里
            inpEle.value=currentTime.toString();
        }
        //增加触发器
        setInterval(showtime,1000)
    </script>
    
    </body>
    </html>
    

【3.0】改善版

  • 【分析】

    • 上述的代码只能一直运行,不能结束,自动结束的就是上节课,进行嵌套函数,多少秒后自动关闭
    • 我们现在设置两个按钮,一个控制时间开始更新,另一个控制将计时器关闭
  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>时间事件</title>
    </head>
    <body>
        <!--定义输入框-->
    <input type="text" id="d1">
        <!--设置两个按钮,一个可以开始,一个控制结束-->
    <button id="b1">点我开始时间</button>
    <button id="b2">点我结束时间</button>
    
    <script>
        //定义一个量 用于储存定时器
        let t=null
    
        //获得输入框标签
        let inpEle=document.getElementById('d1');
        //获得两个按钮的标签
        let startEle=document.getElementById('b1');
        let endEle=document.getElementById('b2');
    
        //设置自动填充时间功能
        function showtime(){
            //找到当前时间
            let currentTime=new Date()
            //填入到框里
            inpEle.value=currentTime.toString();
        }
        //增加触发器,并绑定成点击触发事件,开始计时器
        startEle.onclick=function(){
            //如果t是空,说明计时器没工作,所以开始
            if(!t){
            t=setInterval(showtime,1000)
        }}
        //点击触发关闭事件,关闭计时器
        endEle.onclick=function(){
            clearInterval(t);
            t=null;
        }
    </script>
    
    </body>
    </html>
    

【四】省市联动

  • 【问题介绍】

    • 平时的省和市的选择,实现我们点击第一个框出现某个省,第二个输入框里的内容自动变成其市
  • 【分析】

    • 【界面中】需要定义两个框,第一个是省份,第二个是城市
    • 【数据】先自己写一组数据字典,省份为键,相应城市列表为值
    • 【处理数据】
      • 展示数据的时候,需要遍历省和城市
      • 将遍历好的数据,放入我们的文本框
  • 【代码】

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <!--设置两个输入框-->
    <select name="" id="d1">
        <option value="" selected disabled>----请选择省份----</option>
    </select>
    <select name="" id="d2"></select>
    
    <script>
        //省份数据
        data={
            "河北省": ["廊坊", "邯郸", "保定"],
            "北京": ["朝阳区", "海淀区", "遵化市"],
            "山东": ["威海市", "烟台市"],
        };
        //拿到两个框对象
        let proEle=document.getElementById('d1');
        let cityEle=document.getElementById('d2');
    
        //for循环遍历数据,对第一个省份框进行操作
        for(key in data){
            //遍历的是省份的名字,将遍历的结果做成选项,添加到第一个框
            //创建option标签
            let opEle=document.createElement('option')
            //给option标签设置属性,和属性值
            opEle.innerText=key
            opEle.value = key
            //放入到第一个框
            proEle.appendChild(opEle)
        }
    
        //对第二个框进行数据处理
         // 文本域变化事件 --- change 事件
        proEle.onchange = function () {
            // (1) 先获取到用户选择的省份
            let currentPro = proEle.value;
            // (2) 获取对应的市
            let currentCityList = data[currentPro];
            // 清空市中全部的信息
            cityEle.innerHTML = '';
            // 加一个请选择框
            let oppEle = '<option selected disabled>--请选择--</option>'
    
            cityEle.innerHTML = oppEle
    
            // (3) for 循环 将所有的市渲染到第二个标签
            for (let i = 0; i < currentCityList.length; i++) {
    
                let currentCity = currentCityList[i];
    
                // (1) 创建option标签
                let proEle = document.createElement("option");
                // (2) 设置属性
                proEle.innerText = currentCity
                // (3) 设置值
                proEle.value = currentCity
                // ----->  <option value="省">省</option>
    
                // (4) 将创建好的标签添加到第一个选项框中
                cityEle.appendChild(proEle)
            }
    
        }
    </script>
    </body>
    </html>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值