【JavaScript】定时器详解

【JavaScript】定时器详解

一. 定时器分类

  1. 延迟定时器

    setTimeout(function(){}, 毫秒数)
    

    作用:隔一段时间之后执行

  2. 间隔定时器

    setInterval(function(){}, 毫秒数)
    

    作用:每隔一段时间执行一次

  3. 关闭定时器

    clearTimeout(定时器)
    clearInterval(定时器)
    

    :虽然关闭定时器的方式有两种,且没什么太大的区别,但是还是建议对应着使用。(如:setInterval ==> clearInterval(定时器))

二. 定时器的使用

  1. 延迟定时器

    setTimeout(function () {
        console.log("执行了。。。");
    }, 2000); // 2s 之后,控制台输出:执行了。。。
    
  2. 间隔定时器

    setInterval(function () {
        console.log("执行了...");
    }, 2000);
    
  3. 关闭定时器

    var t1 = setTimeout(function () {
        console.log("执行了延迟定时器");
    }, 1000);
    clearInterval(t1); // 关闭定时器
    

三. 案例:实现抽奖效果

样式一

HTML代码

<div id="box">开始抽奖</div>

CSS代码

div {
    width: 500px;
    height: 100px;
    border: 2px solid #000;
    margin: 100px auto;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 50px;
}

JavaScript代码

// 奖品
var arr = [
    "皮筋一个",
    "辣条一包",
    "谢谢惠顾",
    "包子一个",
    "卡片一张",
    "发夹一个",
    "手机模型",
    "空头支票",
    "皮球一个",
    "果冻一个"
];
// 随机生成 0~arr.length-1 随机数
function randNum(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}
// 标记思维
var flag = false;
t = null;
// 点击开始
box.onclick = function() {
    if (!flag) {
        // 每个一段时间进行内容切换
        t = setInterval(function() {
            // 调用生成随机数函数
            var num = randNum(0, arr.length - 1);
            // 将生成的随机数当做数组的索引,显示数组的值
            var res = arr[num];
            // 将对应的值显示到页面中
            box.innerHTML = res;
        }, 100);
        flag = true;
    } else {
        clearInterval(t);
        flag = false;
    }
}

效果图

请添加图片描述

样式二

HTML代码

<div id="box">开始抽奖</div>
<button id="btn1">开始</button>
<button id="btn2">停止</button>

CSS代码

div {
    width: 500px;
    height: 100px;
    border: 2px solid #000;
    margin: 100px auto;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 50px;
}

body {
    text-align: center;
}

JavaScript代码

// 随机生成 0~arr.length-1 随机数
function randNum(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}
// 奖品
var arr = [
    "皮筋一个",
    "辣条一包",
    "谢谢惠顾",
    "包子一个",
    "卡片一张",
    "发夹一个",
    "手机模型",
    "空头支票",
    "皮球一个",
    "果冻一个"
];
// 随机生成 0~arr.length-1 随机数
function randNum(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}
t = null;
// 点击开始
btn1.onclick = function() {
    // 防止点击开始重复触发
    if (t) {
        return;
    }
    // 每个一段时间进行内容切换
    t = setInterval(function() {
        // 调用生成随机数函数
        var num = randNum(0, arr.length - 1);
        // 将生成的随机数当做数组的索引,显示数组的值
        var res = arr[num];
        // 将对应的值显示到页面中
        box.innerHTML = res;
    }, 100);

}
btn2.onclick = function() {
    clearInterval(t);
    t = null;
}

效果图

请添加图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值