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 相关文章推荐
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
Dec 29 Javascript
JQuery选择器绑定事件及修改内容的方法
Jan 23 Javascript
15位和18位身份证JS校验的简单实例
Jul 18 Javascript
jQ处理xml文件和xml字符串的方法(详解)
Nov 22 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 Javascript
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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
ucenter通信原理分析
2015/01/09 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
常用js脚本
2006/12/03 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python入门前的第一课 python怎样入门
2018/03/06 Python
Python logging设置和logger解析
2019/08/28 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
机电一体化自荐信
2013/12/10 职场文书
仓管岗位职责范本
2014/02/08 职场文书
如何写辞职信
2015/05/13 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书