js手机号批量滚动抽奖实现代码


Posted in Javascript onApril 17, 2020

我们平时在看一些选秀节目或一些歌唱类比赛节目时经常会看到在现场的大屏幕上会有观众的手机号在滚动来选出谁是幸运观众或谁中了什么奖项,这些手机号都是现场观众或场外观众在给选手投票时产生的,当主持人一声开始令下,大屏幕上的手机号就会快速随机滚动,当主持人一声停令下,大屏幕上会随机出现几个停止滚动的手机号,这种手机号批量随机滚动的效果,就是我们今天要实现的效果。注意,在这个效果的实现当中最核心的就是随机和不重复。

下面,我就简单来介绍一下原理:

1、随机,我们要写一个随机数,而且这个随机数不能重复,这个不能重复的随机数说白了就是我们从数据库中取出的手机号的索引;
2、使用定时器不断的产生不重复的随机数,用这些不重复的随机数去绑定手机号并将手机号追加在一个盒子中;
3、去除中奖的手机号(这个前端貌似没法实现,只能后台去控制),当开始抽奖时再次产生不重复的随机数,再次用这些随机数去绑定手机号,直到抽奖结束。

正好我们公司最近年会上有这样的现场抽奖,于是我就做了一个这样的抽奖效果(我们的抽奖号码是用的我们每个人的邀请码,不是手机号,其实原理都一样。),而且可以控制每次中奖的人数,配上后台代码和数据库后效果还不错,接下来就把实现代码

分享出来吧。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<title>互融CLUB</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<style>
*{margin:0;padding:0;}
img{display:block;}
i{font-style:normal;}
.vetically{justify-content:center;align-items:center;display:-webkit-flex;}
.prize_con{position: absolute;width: 100%;height: 100%;background: url(images/firstp_bg.jpg) no-repeat left top / 100% 100%;overflow: hidden;}
.prize_grade{font-size:98px;color: #ffe9af;text-align: center;margin: 160px auto 0;}
.prize_list{width:55%;height:350px;margin: 20px auto 55px;text-align: center;overflow: hidden;}
.prize_list ul{width:100%;font-size:0;}
.prize_list li{display:inline-block;font-size:45px;color:#f1bf90;text-align: center;width:20%;line-height:100px;font-family:Arial;}
.start{width: 250px;height: 90px;margin:0 auto;cursor:pointer;}
.prize_set{position: absolute;right: 60px;bottom: 40px;font-size: 16px;color: #f7f3e8;line-height: 30px;}
.prize_set li{display: inline-block;margin-left: 20px;}
.set_grade select,.set_people input, .set_money input{background: #fff;width:110px;height:36px;border:1px solid #8f0000;margin-left: .1rem;color: #000;padding-left:10px;}
</style>
</head>
<body>
<div class="wrap">
 <div class="prize_con">
 <p class="prize_grade"><span>开始抽奖</span> <i>0</i>元</p>
 <div class="prize_list vetically">
  <ul>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li>
  <li>000000</li> 
  </ul>
 </div>
 <p class="start"><img src="images/prize_start.png" alt=""></p>
 <ul class="prize_set">
  <li class="set_grade">奖等
  <select id="set_grade">
  <option>选择奖等</option>
  <option>特等奖</option>
  <option>一等奖</option>
  <option>二等奖</option>
  <option>三等奖</option>
  </select>
  </li>
  <li class="set_people">人数<input type="tel" placeholder="输入中奖人数" id="prizeCount"></li>
  <li class="set_money">金额<input type="tel" placeholder="输入中奖金额" id="prizeMoney"></li>
 </ul>
 </div>
</div>
<input type="hidden" value="0" id="prize_btn">
<script>
 var ran = 0;
 var myNumber;
 var arr = [];
 var code = [302610,210022,159862,158602,145635,856997,586223,546221,145213,987451,251364,854136,581698,123785,521387,752169,718954,412321,898989,121245,788565,458558,589659,455212,964632,458412,223344,112233,335566,778899];

 /*随机所有的code并且不重复*/
 function showRandomNum(num) {
 var li = "";
 for(var i = 0; i < code.length; i++){
 arr[i] = i;
 }
 arr.sort(function(){
 return 0.5 - Math.random();
 });

 for(var i = 0; i < num; i++){
 var index = arr[i];
 li += '<li>'+code[index]+'</li>';
 }

 $(".prize_list ul").html(li);
 }

 $(function () {
 $(".start").click(function(){
 if($("#prize_btn").val() == 0){ 
 if($("#set_grade").val() == "选择奖等") {
  alert("请选择奖等");
  return;
 }else if($("#prizeCount").val() == "") {
  alert("请输入中奖人数");
  return;
 }else if($("#prizeCount").val() > 10) {
  alert("单次抽奖人数不能超过10人");
  return;
 }else if($("#prizeMoney").val() == "") {
  alert("请输入中奖金额");
  return;
 }else{
  $("#prize_btn").val(1);
  var num = $("#prizeCount").val();
  $(this).find("img").attr("src","images/prize_stop.png");

  myNumber = setInterval(function(){
  showRandomNum(num);
  }, 30);
 } 
 }else{
 $("#prize_btn").val(0);
 clearInterval(myNumber);
 $(this).find("img").attr("src","images/prize_start.png");
 } 
 });

 //回车键控制开始和停止
 $(document).keydown(function (event) {
 var e = event || window.event || arguments.callee.caller.arguments[0];
 if (e && e.keyCode == 13) { // enter 键
  $(".start").click();
 }
 });

 $("#set_grade").change(function(){
 $(".prize_grade span").text($(this).val());
 });

 $("#prizeMoney").keyup(function(){
 $(".prize_grade i").text($(this).val());
 });
}); 
</script>
</body>
</html>

效果图如下:

js手机号批量滚动抽奖实现代码

以下附上源代码:js手机号批量滚动抽奖代码实现

想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能

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

Javascript 相关文章推荐
JavaScript Date对象使用总结
May 14 Javascript
火狐下input焦点无法重复获取问题的解决方法
Jun 16 Javascript
分享一则javascript 调试技巧
Jan 02 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
对于js垃圾回收机制的理解
Sep 14 Javascript
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 Javascript
js图片轮播手动切换特效
Jan 12 #Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 #Javascript
JavaScript定义全局对象的方法示例
Jan 12 #Javascript
Node.js制作简单聊天室
Jan 12 #Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 #Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 #Javascript
jQuery Validate 数组 全部验证问题
Jan 12 #Javascript
You might like
一个php作的文本留言本的例子(三)
2006/10/09 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python获取豆瓣电影简介代码分享
2014/01/16 Python
python计算时间差的方法
2015/05/20 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
python基于win32api实现键盘输入
2020/12/09 Python
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
后进生评语大全
2015/01/04 职场文书
生产设备维护保养制度
2015/08/06 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis