文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript实现抽奖器效果

2024-04-02 19:55

关注

本文实例为大家分享了JavaScript实现抽奖器效果的具体代码,供大家参考,具体内容如下

这次实现的效果如下图:

所实现的功能是:当每次点击中间的抽奖按钮时,会随机选择一个盒子作为抽奖的结果。

那我们要如何实现抽奖的功能呢?

其实很简单,首先用html和css做出整体的框架,然后用js在中间按钮的onclick函数中设置定时器+随机改变某一盒子的背景颜色就可以了。 下面我们来讨论一下细节的方面:

1、设计整体框架时,我们需要为每个盒子设置边框,这时会发现边框会出现重叠问题,导致边框变厚,解决的方法是:设置margin-rightmargin-bottom负值(值等于边框值)。

2、.在js中设置抽奖功能时,我们可以通过设置一个定时器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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯