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 相关文章推荐
CSS和Javascript简单复习资料
Jun 29 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
Mar 25 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
Bootstrap面板学习使用
Feb 09 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 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
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
php 魔术方法使用说明
2009/10/20 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
JS重载实现方法分析
2016/12/16 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
2014年招生工作总结
2014/11/26 职场文书
团代会开幕词
2015/01/28 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB