大家在很多活动页面上都看到绚丽多彩的抽奖运用,网上也有比较多关于这方面的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 简单抽奖实现的更多相关文章

  1. JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...

  2. js简单 图片版时钟,带翻转效果

    js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  4. js简单弹出层、遮罩层

    <html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...

  5. Tourist.js – 简单灵活的操作指南和导航插件

    Tourist.js 是一个基于 Backbone 和 jQuery 开发的轻量库,帮助你在应用程序创建简单易用的操作指南和导航功能.相比网站,它更适合用于复杂的,单页网站类型的应用程序.Touris ...

  6. js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

    js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...

  7. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  8. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

  9. JS简单入门教程

    JS简单教程 使用方法:放到任意html页面的head标签下 Test1方法弹出当前时间对话框 Test2方法for循环输出 Test3方法for(…in…)输出数组内容 <script typ ...

随机推荐

  1. C51 一个非常有用的位操作 --- 其中一位置 0 其它位不变

    C51 一个非常有用的位操作 --- 其中一位置 0 其它不变 C51 中经常操作位,以下方法就非常方便,来自 1 s &= ~(1 << j) /* 将变量s的第j位置成0,其余 ...

  2. LVS+Keepalived搭建

    LVS+Keepalived搭建 原理说明 (推荐): http://www.cnblogs.com/likehua/archive/2014/06/19/3796849.html http://ou ...

  3. php-fpm.conf 配置文件详解

    php-fpm.conf  配置文件详解 [global] pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = notice # ...

  4. AngularJS:表格

    ylbtech-AngularJS:表格 1.返回顶部 1. AngularJS 表格 ng-repeat 指令可以完美的显示表格. 在表格中显示数据 使用 angular 显示表格是非常简单的: A ...

  5. PHP手机号中间四位用星号*代替显示

    三种实现方式 <?php $tel = '12345678910'; //1.字符串截取法 $new_tel1 = substr($tel, 0, 3).'****'.substr($tel, ...

  6. mysql锁,事务

    什么是事务 事务定义了一个服务操作序列,由服务器保证这些操作序列在多个客户并发访问和服务器出现故障情况下的原子性事务的属性 A --redo&undo C --undo I --lock D ...

  7. web开发 那些年基于Redis的Provider库

    因为session基于本地cache,以前我们自己写分布式缓存,或者数据库存储,或者cookie加密存储,来保存用户状态信息,但较少的直接通过创建一个继承 SessionStateStoreProvi ...

  8. 【linux】查看进程使用的端口和端口使用情况

    netstat -a 查看所有服务端口 netstat -tln 查看当前使用的端口   ps命令查看进程的id: ps aux | grep ftp 或者 pidof Name   netstat命 ...

  9. c语言相关知识点解析

    程序基本结构 常量变量标识符 数据类型 整型类型 浮点类型(实型) 基本类型转换 字符串 函数类型 枚举类型 enum 数组类型 结构体类型 共用体类型 字符串函数 运算符 流程控制语句 输入输出语句 ...

  10. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...