JavaScript实现简单抽奖器:定时与随机高亮逻辑

作者:纸飞机时间:2026-10-24 17:34:58浏览:104

本文介绍如何使用JavaScript实现一个简单的网页抽奖器。核心逻辑包括利用CSS处理边框重叠,通过setInterval实现随机背景色高亮,并使用setTimeout控制抽奖结束。文章详细解析了定时器配合、DOM元素获取及样式重置的具体实现步骤与代码细节。

本文分享了一个使用JavaScript编写的抽奖器实现方案,供开发者参考具体代码实现。

抽奖器界面效果

最终实现的界面效果如下图所示:

抽奖器界面效果

该功能的核心逻辑是:每次用户点击中间的抽奖按钮,系统会随机选中一个盒子作为中奖结果。

功能实现原理

那么,具体该如何实现这一抽奖功能呢?

详细实现步骤

实现过程相对直观:首先使用HTML和CSS构建基础框架,随后在中间按钮的onclick事件处理函数中,通过设置定时器并随机更改某个盒子的背景颜色来模拟抽奖过程。接下来我们将深入探讨具体的实现细节。

1、在构建整体框架时,需要为每个盒子设置边框。此时可能会遇到边框重叠导致视觉厚度增加的问题,解决方法是将margin-right和margin-bottom的值设置为负数(数值大小等于边框宽度)。

2、在JavaScript中实现抽奖逻辑时,可以设置一个定时器A,在其中随机改变某个盒子的background-color属性以表示选中状态。为了让抽奖能在特定时刻停止,可以设置另一个定时器B,在指定时间点后关闭定时器A。

3、关于随机改变的实现方式:首先调用document.getElementsByTagName获取所有盒子元素,然后利用Math.random()*盒子的数目计算出一个随机下标,进而改变对应盒子的背景颜色。

显然,定时器A使用的是setInterval方法,而定时器B使用的是setTimeout方法。

此外,在定时器A中改变某个盒子背景颜色时,需要将上一个被改变颜色的盒子恢复为原始颜色,因此需要记录上一次被高亮的盒子元素。

具体代码实现如下所示:

完整代码示例


<!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>
        *{
            margin:0;
            padding: 0;
        }
        .container{
            width: 400px;
            height: 400px;
            margin:50px auto;
        }
        span,#main{
            display: block;
            width: 100px;
            height: 100px;
            border:2px pink solid;
            float:left;
            margin-left:-2px;
            margin-bottom:-2px;
            text-align: center;
            line-height: 100px;
            border-radius: 16px;
            box-shadow: 2px 2px 3px rgba(226, 86, 109, 0.459);
        }
        #main{
            background-color: rgba(243, 97, 126, 0.651);
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="container">
        <div>
            <span>可视化</span>
            <span>图形学</span>
            <span>操作系统</span>
        </div>
        <div>
            <span>乐事</span>
            <div id="main">抽奖</div>
            <span>大白兔</span>
        </div>
        <div>
            <span>柠檬水</span>
            <span>黑咖啡</span>
            <span>芋泥奶茶</span>
        </div>
    </div>
    <script>
        let main=document.getElementById("main");
        let box=document.getElementsByTagName("span");
        var num=null;
        main.onclick=function(){
            let tem=setInterval(() => {
                if(num!==null){
                    box[num].style.backgroundColor="white";
                }
                num=parseInt(Math.random()*8);
                box[num].style.backgroundColor="rgba(243, 97, 126, 0.651)";
                console.log(num);
            }, 120);

            setTimeout(() => {
                clearInterval(tem)
            }, 3000);
        }
    </script>
</body>
</html>

以上就是本文的全部内容,希望对读者的学习有所帮助,也欢迎大家继续支持本站。

作者最新文章