js 简单抽奖实现
大家在很多活动页面上都看到绚丽多彩的抽奖运用,网上也有比较多关于这方面的js和用as。今天我在工作的时候也要做个抽奖的运用。我之前没有写过这类的js,也不会as,就得屁颠屁颠的问度娘啦,虽然找到有js写的也有用框架做的,研究了下,觉得忒复杂。突然想到之前公司有个简单实现的抽奖js。就要拿过来看看,结合自己的需求封装成一个类。
html代码如下:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
ul{list-style:none;}
li{display:inline-block; border:1px solid #000;}
span{display:inline-block; padding:10px 15px;}
li .lottery_yeah{background:red;}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
</head>
<body>
<input type="button" id="btn" value="button" />
<ul id="la" class="lottery_all">
<li><span eid="0" class="lottery_box">1</span></li>
<li><span eid="1" class="lottery_box">2</span></li>
<li><span eid="2" class="lottery_box">3</span></li>
<li><span eid="3" class="lottery_box">4</span></li>
<li><span eid="4" class="lottery_box">5</span></li>
<li><span eid="5" class="lottery_box">6</span></li>
<li><span eid="6" class="lottery_box">7</span></li>
<li><span eid="7" class="lottery_box">8</span></li>
<li><span eid="8" class="lottery_box">9</span></li>
</ul>
<script type="text/javascript" src="cj.js"></script>
</body>
</html>
js代码如下:
/*
* 抽奖封装对象
* @class LuckyDraw
* @param { Number } 抽奖悬停号码
* @method LuckyDraw.tigerMac
* @param { Number, Function } 运动步伐间距,回调函数
*
*/
function LuckyDraw( numId ) {
if ( this instanceof LuckyDraw ) {
this.rewardId = numId;
this.timer = null;
} else {
return new LuckyDraw( numId );
}
} LuckyDraw.prototype.tigerMac = function( iStep, callback ) {
var speed = 200 / iStep, // 时间间隔
$luckyItem = $('#la .lottery_box'),
len = $luckyItem.length,
index = 0, // 索引值
_this = this; $luckyItem.removeClass('lottery_yeah').eq( index ).addClass('lottery_yeah'); this.timer = setInterval(function () {
if ( index + 1 > len ) {
index = 0;
iStep++;
clearInterval( _this.timer );
_this.tigerMac( iStep, callback );
} else {
if ( iStep >= 6 ) {
if ( _this.rewardId && $luckyItem.eq( index ).attr('eid') == _this.rewardId ) {
$luckyItem.eq( index ).addClass('lottery_yeah');
clearInterval( _this.timer );
if ( callback && typeof callback === 'function' ) {
callback.call( $luckyItem[index] );
}
return
}
}
index++;
}
$luckyItem.removeClass('lottery_yeah').eq(index).addClass('lottery_yeah');
}, speed)
}; // 抽奖
$('#btn').click(
(function(){
var n = 3,
aLuckyNum = [2, 5, 8],
oCj = null; return function() {
if ( n ) {
oCj = new LuckyDraw( aLuckyNum[n - 1] );
n--;
oCj.tigerMac( 1, function(){
if ( Number( $(this).text() ) === 6 ) {
alert('恭喜中奖啦!你还有' + n + '次抽奖机会哦!');
} else if ( n ) {
alert('^ @ ^ 没中奖,加油!你还有' + n + '次抽奖机会哦!');
} else {
alert('^ @ ^ 没中奖!谢谢参与');
}
} );
oCj = null;
}else {
alert('你没有抽奖机会啦');
}
}
})()
);
以上就是整个js抽奖的代码,至于抽奖布局的话,大家就看着处理吧。大家看到有更好的实现方法,欢迎留言或者联系我,一起学习!
js 简单抽奖实现的更多相关文章
- JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法
本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...
- js简单 图片版时钟,带翻转效果
js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- js简单弹出层、遮罩层
<html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...
- Tourist.js – 简单灵活的操作指南和导航插件
Tourist.js 是一个基于 Backbone 和 jQuery 开发的轻量库,帮助你在应用程序创建简单易用的操作指南和导航功能.相比网站,它更适合用于复杂的,单页网站类型的应用程序.Touris ...
- js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .
js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
- JS简单入门教程
JS简单教程 使用方法:放到任意html页面的head标签下 Test1方法弹出当前时间对话框 Test2方法for循环输出 Test3方法for(…in…)输出数组内容 <script typ ...
随机推荐
- poj 3128 Leonardo's Notebook——思路(置换)
题目:http://poj.org/problem?id=3128 从环的角度考虑. 原来有奇数个点的环,现在点数不变: 原来有偶数个点的环(设有 k 个点),现在变成两个大小为 k/2 的环. 所以 ...
- 洛谷 2831 (NOIp2016) 愤怒的小鸟——仅+1所以bfs优化
题目:https://www.luogu.org/problemnew/show/P2831 状压dp.跑得很慢.(n^2*2^n) 注意只打一只猪的情况. #include<iostream& ...
- 最长的回文串——hdu3068
http://acm.hdu.edu.cn/showproblem.php?pid=3068 abcba 5 aab 2 在一个字符串里寻找一条最长的回文串 比较直接的想法是枚举中心点 然后像两边扩散 ...
- 使用内部变量,删除,替换,UNSET,等字符操作
使用内部变量,删除,替换,UNSET,等字符操作 FREDDY=freddy 删除字符串前几2个字符: [root@localhost tmp]# echo ${FREDDY:2} eddy ...
- liunx基础(5)
第十三单元 硬盘分区.格式化及文件系统的管理二 1. 文件系统的挂载与卸载(详见linux系统管理P406)1) 掌握挂载的定义:挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上.2) 掌握 ...
- 【转】JMeter试用手记
JMeter是一款性能测试工具.个人认为与其说他是一个工具,不如说他是一个框架.因为JMeter的支持范围非常广,目前常见的需要进行性能测试的应用几乎都能应用(如:files, Servlets, P ...
- html 文字垂直居中
html 文字垂直居中 <span style="float:right; padding-right:30px;line-height:64px" class=" ...
- 1137 Final Grading
题意:排序题. 思路:通过unordered_map来存储考生姓名与其成绩信息结构体的映射,成绩初始化为-1,在读入数据时更新各个成绩,最后计算最终成绩并把符合条件的学生存入vector,再排序即可. ...
- C Primer Plus学习笔记(十一)- 存储类别、链接和内存管理
存储类别 从硬件方面来看,被储存的每个值都占用一定的物理内存,C 语言把这样的一块内存称为对象(object) 对象可以储存一个或多个值.一个对象可能并未储存实际的值,但是它在储存适当的值时一定具有相 ...
- MySQL的FORMAT函数用法规则
1.FORMAT函数在mysql中是数据内容格式化的,格式化后得到结果:###,###,#####. ,); 输出结果: ,000.00 2.可以格式化数据为整数或者浮点数. ); 输出结果: 100 ...