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 相关文章推荐
JavaScript 入门·JavaScript 具有全范围的运算符
Oct 01 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
JAVASCRIPT函数作用域和提前声明 分享
Aug 22 Javascript
js运动应用实例解析
Dec 28 Javascript
js精准的倒计时函数分享
Jun 29 Javascript
js图片轮播插件的封装
Jul 21 Javascript
vue数据控制视图源码解析
Mar 28 Javascript
js判断非127开头的IP地址的实例代码
Jan 05 Javascript
微信小程序8种数据通信的方式小结
Feb 03 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
vue实现省市区联动 element-china-area-data插件
Apr 22 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实现图象锐化代码
2007/06/14 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
php实现微信公众号无限群发
2015/10/11 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python实现封装得到virustotal扫描结果
2014/10/05 Python
python通过smpt发送邮件的方法
2015/04/30 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
python标记语句块使用方法总结
2019/08/05 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Django中的AutoField字段使用
2020/05/18 Python
Python request post上传文件常见要点
2020/11/20 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
记者岗位职责
2014/01/06 职场文书
住房公积金接收函
2014/01/09 职场文书
函授药学自我鉴定
2014/02/07 职场文书
闪闪的红星观后感
2015/06/08 职场文书
干部培训简讯
2015/07/20 职场文书
运动会广播稿100字
2015/08/19 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python