BOM ------ 定时器

简介: BOM ------ 定时器

定时器 setTimeout (只执行一次)

setTimeout(调用函数, 延时时间)

页面中可能有多个定时器 可以给定时器添加标识符(名字)
  function callback(){
            alert('bong~')
        }
    var time1 = setTimeout(callback,1000) //1s后调用
    var time2 = setTimeout(callback,3000) //3s后调用

2秒后自动关闭广告

利用定时器, 两秒后在函数体内隐藏显示的内容
  //html代码
  <img src="广告.png" class="ad">
  //js代码
  var ad = document.querySelector('.ad')
    setTimeout(function(){
        ad.style.display = 'none' //隐藏广告
    }, 2000)

清除定时器 clearTimeout(只执行一次)

clearTimeout()

  //html代码
  <button>点击清除定时器</button>
  //js代码
  var btn = document.querySelector('button')
    var timer = setTimeout(function() {
        alert('bong~')
    },2000)
    btn.addEventListener('click', function(){
        clearTimeout(timer) //传入要清除的定时器
    })

定时器 setInterval (循环执行)

setInterval(调用函数, 延时时间)

  setInterval(function() {
        console.log('继续输出');
    },1000)  //每隔1s输出一次

倒计时效果

e8a14812aa09494686bed2eb7980bc92.png

1. 设置3个span, 并设置好样式
2. 获取元素 时 分 秒
3. 先调用下面自定义的函数, 防止页面空白
4. 获取用户输入事件的总毫秒数
5. 通过算法让每个盒子得到相应的内容
6. 设置1s的循环定时器, 每过1s调用一次函数


  //css代码
  span{
        width: 50px;
        height: 50px;
        padding: 20px;
        color: aliceblue;
        background-color: black;
        line-height: 40px;
    }
    //html代码
    <div>
        <span class="hour"></span>
        <span class="minute"></span>
        <span class="second"></span>
    </div>
    //js代码
    // 1.获取元素
        var hour = document.querySelector('.hour')
        var minute = document.querySelector('.minute')
        var second = document.querySelector('.second')
        var inputTime = +new Date('2022-2-18 24:00:00') //返回的是用户输入时间总的毫秒数
        countDown() //先调用一次这个函数 防止页面空白
        // 2.开启循环定时器
        setInterval(countDown, 1000)
        function countDown() {
            var nowTime = +new Date() //返回的是当前时间总的毫秒数
            var times = (inputTime - nowTime) / 1000 //times是剩余时间总的秒数
            var h = parseInt(times / 60 / 60 % 24) //时
            h = h < 10 ? '0' + h : h //当剩余小时小于10时,前面加个0
            hour.innerHTML = h  //把剩余的小时 给小时盒子
            var m = parseInt(times / 60 % 60) //分
            m = m < 10 ? '0' + m : m
            minute.innerHTML = m  //把剩余的分钟 给分钟盒子
            var s = parseInt(times % 60) //秒
            s = s < 10 ? '0' + s : s
            second.innerHTML = s  //把剩余的秒 给秒盒子
        }

清除定时器 clearInterval (循环执行)

clearInterval()

  //html代码
  <button class="begin">开启定时器</button>
    <button class="stop">关闭定时器</button>
    //js代码
    var begin = document.querySelector('.begin')
    var stop = document.querySelector('.stop')
    var timer = null //全局变量 null是一个空对象
    begin.addEventListener('click', function() {
        timer = setInterval(function() {
            console.log('HELLO');
        },1000) //每隔1s输出一次
    })
    stop.addEventListener('click', function () {
        clearInterval(timer) //点击停止定时器
    })

验证码剩余时间 (禁用发送按钮)

d5086226bb1b41199405c8fbeedf557e.png

1.按钮点击之后, 会禁用 disabled 为 true
2.同时按钮里面的内容会变化, 注意 button 里面的内容通过 innerHTML 修改
3.里面秒数是有变化的, 因此需要用到定时器
4.定义一个变量, 在定时器里面 不断递减
5.如果变量为0 说明时间到了, 我们需要停止定时器 并且复原按钮初始状态
  //html代码
  手机号: <input type="number"> <button>发送</button>
  //js代码
  var btn = document.querySelector('button')
    var time = 3 //定义剩下的秒数
    btn.addEventListener('click', function(){
        btn.disabled = true
        var timer = setInterval(function() {
            if(time == 0){
                clearInterval(timer)
                btn.disabled = false
                btn.innerHTML = '发送'
                time = 3  //这个 3 需要重新开始
            }else{
                btn.innerHTML = '还剩下' + time + '秒'
                time--
            }
        },1000)
    })

不积跬步无以至千里 不积小流无以成江海

相关文章
|
6月前
|
JavaScript 前端开发
大项目事件58-----打包发布-------概念介绍
大项目事件58-----打包发布-------概念介绍
|
6月前
|
Java Maven 容器
大事件项目07----10,11,12未录
大事件项目07----10,11,12未录
|
小程序 前端开发 定位技术
小程序----组件
小程序----组件
|
小程序 JavaScript
小程序----事件绑定
小程序----事件绑定
|
小程序 前端开发 程序员
小程序----网络数据请求
小程序----网络数据请求
|
JavaScript
BOM ------ 动画实现
BOM ------ 动画实现
|
JavaScript 前端开发 内存技术
BOM ------ Window 常见事件
BOM ------ Window 常见事件
|
JavaScript
BOM ------ 立即执行函数
BOM ------ 立即执行函数
|
JavaScript 算法
BOM ------ 缓动效果
BOM ------ 缓动效果
|
JavaScript
BOM ------ this指向问题
BOM ------ this指向问题