js实现随机抽奖


Posted in Javascript onMarch 19, 2020

前言

在前端的开发当中,我们肯定会遇到随机抽奖的需求。我们要怎么去实现呢?下面就来分享随机抽奖的JS代码,有需要的小伙伴可以复制到编译器当中运行查看效果。

随机抽奖的JS代码

<!DOCTYPE html>
<html>

 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
 #wrap {
 text-align: center;
 width: 500px;
 margin: 100px auto;
 position: relative;
 }
 
 #ul1 {
 width: 303px;
 height: 303px;
 margin: 50px auto;
 padding: 0;
 border-top: 1px solid black;
 border-left: 1px solid black;
 }
 
 #ul1 li {
 float: left;
 border-right: 1px solid black;
 border-bottom: 1px solid black;
 list-style: none;
 width: 100px;
 height: 100px;
 line-height: 100px;
 text-align: center;
 }
 
 #tooltips {
 width: 100%;
 height: 100%;
 background-color: rgba(0, 0, 0, 0.5);
 position: absolute;
 top: 0;
 z-index: 999;
 display: none;
 }
 
 #info .btn button {
 background-color: #009f95;
 color: white;
 outline: none;
 font-size: 10px;
 width: 60px;
 height: 30px;
 margin-left: 300px;
 }
 
 #info .content {
 height: 120px;
 padding: 20px;
 box-sizing: border-box;
 }
 </style>
 </head>

 <body>
 <div id="wrap">
 <button id="btn">开始抽奖</button>
 <ul id="ul1">
 <li>鼠标</li>
 <li>1000万</li>
 <li>100优惠券</li>
 <li>很遗憾</li>
 <li>键盘</li>
 <li>iPhoneX</li>
 <li>很遗憾</li>
 <li>迪拜10日游</li>
 <li>很遗憾</li>
 </ul>
 </div>
 <!--提示信息-->
 <div id="tooltips">
 <div id="info">
 <div class="title">信息</div>
 <div class="content" id="content">恭喜你,中奖啦!!!</div>
 <div class="btn">
  <button id="confirm">确定</button>
 </div>
 </div>
 </div>
 <script type="text/javascript">
 // 思路:1.实现红色背景切换 2当运动停止,弹出对话框-- 用js去修改tooltips的display属性 变为block
 var oStart = document.getElementById("btn")
 // li标签
 var aLi = document.getElementsByTagName("li")
 // 提示框
 var oTooltips = document.getElementById("tooltips")
 // 提示框的确定按钮
 var oConfirm = document.getElementById("confirm")
 // 提示框的提示内容
 var oContent = document.getElementById("content")
 // 定时器id
 var timmer = null
 // 设置oTooltips的高度和html文档高度一样,这样把所有的内容都遮住
 oTooltips.style.height = document.documentElement.offsetHeight + "px"
 oStart.onclick = function() {
 // 清空计时器
 clearInterval(timmer)
 // 定义一个下标
 var nowIndex = 0
 // 生成一个随机数,跑到第四圈的时候产生一个随机中奖数字
 var randomInt = getRandomInt(26, 35)
 // 下面代码只是为了给用户感觉:正在抽奖
 timmer = setInterval(function() {
  changeColor(aLi, nowIndex % aLi.length)
  // 下标自动+1
  nowIndex++
  console.log("切换的下标", nowIndex, "随机数", randomInt)
  // randomInt表示中奖的数字 ,如果nowIndex和randomInt一样,我们就认为当前的li是抽中的奖品
  if(nowIndex === randomInt) {
  clearInterval(timmer)
  // 停止以后,还应该往后切换一次
  changeColor(aLi, nowIndex % aLi.length)
  // 在停止的时候,获取到当前抽中的li的内容
  if(aLi[randomInt % aLi.length].innerHTML === "很遗憾") {
  oContent.innerHTML = "很遗憾没有中奖"
  } else {
  oContent.innerHTML = "恭喜你,你抽中了" + aLi[randomInt % aLi.length].innerHTML
  }
  oTooltips.style.display = "block"
  }
 }, 100)
 // 什么时候停止?当中奖的时候停止,抽中了谁?
 // 可以用随机数生成一个具体的数字 randomInt
 // 完善功能:提示用户抽中了什么 2让背景切换多跑几圈
 }
 // 当点击提示框确定按钮的时候,提示框消失
 oConfirm.onclick = function() {
 oTooltips.style.display = "none"
 }
 // 封装切换一个切换背景的方法
 function changeColor(aLi, nowIndex) {
 for(var i = 0; i < aLi.length; i++) {
  // 清除上一个红色背景,全部设置成白色
  aLi[i].style.backgroundColor = "white"
 }
 // 当前下标背景设置成红色
 aLi[nowIndex].style.backgroundColor = "red"
 }
 // 获取随机数的方法
 function getRandomInt(min, max) {
 return Math.floor(Math.random() * (max - min + 1) + min)
 }
 </script>
 </body>

</html>

小编还为大家准备了精彩的专题:javascript经典小游戏汇总

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

Javascript 相关文章推荐
DWR Ext 加载数据
Mar 22 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
node中koa中间件机制详解
Aug 22 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 Javascript
vue 实现websocket发送消息并实时接收消息
Dec 09 Javascript
Vue实现购物车实例代码两则
May 30 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
Vue仿百度搜索功能
Dec 28 Vue.js
js实现抽奖的两种方法
Mar 19 #Javascript
js实现九宫格抽奖
Mar 19 #Javascript
在Vue.js中使用TypeScript的方法
Mar 19 #Javascript
JS实现长图上下滚动效果
Mar 19 #Javascript
JavaScript实现简单计算器
Mar 19 #Javascript
jQuery实现颜色打字机的完整代码
Mar 19 #jQuery
webpack 动态批量加载文件的实现方法
Mar 19 #Javascript
You might like
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php页面缓存方法小结
2015/01/10 PHP
php多重接口的实现方法
2015/06/20 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python中单、双下划线的区别总结
2017/12/01 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
详解python 中in 的 用法
2019/12/12 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
毕业生自我鉴定
2013/11/05 职场文书
销售行政专员职责
2014/01/03 职场文书
四风问题查摆材料
2014/08/25 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技