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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
jQuery多级手风琴菜单实例讲解
Oct 22 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
JS创建或填充任意长度数组的小技巧汇总
Oct 24 Javascript
JS setTimeout与setInterval的区别
Apr 20 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php自定义错误处理用法实例
2015/03/20 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
vue实例的选项总结
2020/06/09 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
小学运动会表扬稿
2014/01/19 职场文书
公司薪酬管理制度
2014/01/31 职场文书
电子信息专业自荐书
2014/02/04 职场文书
保险公司晨会主持词
2014/03/22 职场文书
老乡会致辞
2015/07/28 职场文书
医德医风学习心得体会
2016/01/25 职场文书
高一作文之乐趣
2019/11/21 职场文书
python - asyncio异步编程
2021/04/06 Python