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 相关文章推荐
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
js取值中form.all和不加all的区别介绍
Jan 20 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
angular简介和其特点介绍
Jan 29 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
Angular Module声明和获取重载实例代码
Sep 14 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 Javascript
angularJs利用$scope处理升降序的方法
Oct 08 Javascript
微信小程序云开发(数据库)详解
May 17 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 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中文乱码解决方案
2015/03/05 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
JS实现微信摇一摇原理解析
2017/07/22 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
Python实现中值滤波去噪方式
2019/12/18 Python
python代码中怎么换行
2020/06/17 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
我的中国梦演讲稿1000字
2014/08/19 职场文书
竞聘自述材料
2014/08/25 职场文书
继承公证书格式
2015/01/26 职场文书
联谊会开场白
2015/06/01 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python