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 相关文章推荐
一个可拖拽列宽表格实例演示
Nov 26 Javascript
document节点对象的获取方式示例介绍
Dec 24 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
php继承的一个应用
2011/09/06 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
vue+eslint+vscode配置教程
2019/08/09 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
python安装scipy的方法步骤
2019/06/26 Python
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
创业计划书怎样才能打动风投
2014/01/01 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
Python基础之条件语句详解
2021/06/16 Python
浅析Python实现DFA算法
2021/06/26 Python
javascript函数式编程基础
2021/09/15 Javascript
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby