JS实现简单的九宫格抽奖


Posted in Javascript onJune 28, 2022

本文实例为大家分享了JS实现简单九宫格抽奖的具体代码,供大家参考,具体内容如下

结构

<body>

    <div id="fa">
        <div class="option">1</div>
        <div class="option">5</div>
        <div class="option">3</div>
        <div class="option">4</div>
        <div id="start">开始抽奖</div>
        <div class="option">5</div>
        <div class="option">6</div>
        <div class="option">7</div>
        <div class="option">8</div>
    </div>
</body>

样式

<style>
        #fa {
            width: 600px;
            height: 600px;
            border: 1px solid red;

        }

        #fa>div {
            width: 33%;
            height: 33%;
            border: 1px solid red;
            float: left;
            line-height: 200px;
            text-align: center;//文本居中
            font-size: 40px;
            font-weight: 800;//加粗字体

        }

        #start {
            cursor: pointer;//使鼠标移入时出现小手图标
            background-color: pink;
        }
</style>

JS实现抽奖

逻辑分析:

1.点击中间的开始抽奖时触发一个定时器
2.触发定时器后,随机生成一个数字,通过这个数字来获取当前所在元素
3.设置一个时间来结束定时器,结束抽奖

<script>
         let btn = document.getElementById('start');//获取到开始抽奖按钮
        let options = document.getElementsByClassName('option');//获取到8个奖区
        let timer =null;//防止定时器多次触发,初始值设为null

        //为btn绑定一个单击事件
        btn.onclick = function () {
            //设置一个初始值 作为时间判断
            let num = 0;
            
            if (timer == null) {
                //触发一个定时器
               timer = setInterval(function () {

                    num++;

                     //随机产生一个0 - 7 的数字 通过该数字作为数组的下标来获取到div
                    let ran = Math.round(Math.random() * (7 - 0) + 0);
                    //round是因为Math.random() * (7 - 0) + 0)取出的随机数是含小数的一串数字,所以需要取整
                    
                    //改变选中的元素背景颜色之前,将所有元素的背景颜色恢复
                    for (let i = 0; i < options.length; i++) {
                        options[i].style.backgroundColor = '';
                    }

                    //给选中的元素设置一个背景颜色
                    options[ran].style.backgroundColor = 'tomato';

                    //给定时器一个时间,到时间停止定时器
                    if(num == 5){
                        clearInterval(timer)
                    }

                }, 1000)
            }

        }
</script>

效果

JS实现简单的九宫格抽奖

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Javascript 相关文章推荐
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
node.js中的fs.fchownSync方法使用说明
Dec 16 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
javascript数据类型详解
Feb 07 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
JS实现九宫格拼图游戏
JavaScript实现九宫格拖拽效果
JS实现简单九宫格抽奖
Jun 28 #Javascript
Vite + React从零开始搭建一个开源组件库
Jun 25 #Javascript
React自定义hook的方法
Jun 25 #Javascript
小程序实现侧滑删除功能
Jun 25 #Javascript
小程序自定义轮播图圆点组件
Jun 25 #Javascript
You might like
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python对切片命名的实现方法
2018/10/16 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
携程英文网站:Trip.com
2017/02/07 全球购物
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
作风建设年度心得体会
2014/10/29 职场文书
公证处委托书
2015/01/28 职场文书
颐和园导游词
2015/01/30 职场文书
狂人日记读书笔记
2015/06/30 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers