javascript-实现小抽奖程序

直接上代码

<style>
*{ margin: 0; padding:0;}
.prize_wrap{
	width: 300px;
	height: 150px;
}
.prize_wrap .active{
	position: absolute;
	width: 100px;
	height: 50px;
	background: #f00;
	line-height: 50px;
	text-align: center;
	border:solid 1px #999;
	margin:-1px;
}
.prize_cell,
.prize_btn{
	position: absolute;
	background:#ccc;
	width: 100px;
	height: 50px;
	line-height: 50px;
	text-align: center;
}
.prize_btn{
	background:#f0f;
	cursor: pointer;
}
</style>
<div class="prize_wrap" id="prize_wrap">
	<div class="prize_cell" style="left:0;top:0">1</div>
    <div class="prize_cell" style="left:100px;top:0">2</div>
    <div class="prize_cell" style="left:200px;top:0">3</div>
    <div class="prize_cell" style="left:200px;top:50px">4</div>
	<div class="prize_btn"	style="left:100px;top:50px" id="prize_start">抽奖开始</div>
    <div class="prize_cell" style="left:200px;top:100px">5</div>
    <div class="prize_cell" style="left:100px;top:100px">6</div>
    <div class="prize_cell" style="left:0;top:100px">7</div>
    <div class="prize_cell" style="left:0;top:50px">8</div>

</div>
<script>
//构造函数
var prizeScroll=(function(doc){
	function _getItemsFilterCls(cls,items){
		var ret=[];
		for(var i=0,len=items.length;i<len;i++){
			if(items[i].className.indexOf(cls)>-1){
				ret.push(items[i]);
			}
		}
		return ret;
	}
	return function(opt){
		this.wrap=doc.getElementById(opt.id)||doc.body;
		this.items=opt.items||_getItemsFilterCls(opt.id.replace(‘_wrap‘,‘‘)+‘_cell‘,this.wrap.getElementsByTagName(‘*‘));
		this.btn=doc.getElementById(opt.btn);
		this.curClass=opt.curClass||‘active‘;
		this.prizeNum=-1;
		this.curIdx=0;
		this.interval=null;
		this.queue=[100,50,30,50,100,150];//转速
		this.queue.gid=0;//转圈数
		this.callBack=opt.callBack||function(){};
		this.init();
	}
})(document);

//工具方法
prizeScroll.log=function(msg){
	if(console&&console.log){
		console.log(msg);
	}else{
		alert(msg);
	}
}

prizeScroll.prototype.init=function(){
	//初始化
	//prizeScroll.log(‘init‘);
}

prizeScroll.prototype._setInterval=function(timer,stopNum){
	//滚动动画
	var _self=this,len=stopNum||_self.items.length;
	_self._clearInterval();
	_self.interval=setInterval(function(){
		if(_self.curIdx>len-1){
			_self._clearInterval();
			_self._next();
			return;
		}
		_self._setActive(_self.curIdx);
		_self.curIdx++;
	},timer);
}
prizeScroll.prototype._setActive=function(idx){
	//设置中奖状态
	for(var i=0,len=this.items.length;i<len;i++){
		this.items[i].className=‘prize_cell‘;
	}
	this.items[idx].className=‘active‘;
}

prizeScroll.prototype._clearInterval=function(){
	//清除动画
	var _self=this;
	_self.interval&&clearInterval(_self.interval);
}
prizeScroll.prototype.start=function(){
	//开始
	this._next();
}
prizeScroll.prototype._next=function(){
	//动画排序
	this.curIdx=0;
	this.interval=null;
	var time=this.queue[this.queue.gid];
	if(this.queue.gid>this.queue.length-1){
		this.callBack(this.prizeNum);
		return;}
	if(this.queue.gid===this.queue.length-1){
		this._setInterval(time,this.getPrizeNum());//奖品设置
		this.queue.gid++;
		return;
	}
	this._setInterval(time);
	this.queue.gid++;
}

prizeScroll.prototype.reset=function(){
	//重置重新开始
	this.stop();
	this.queue.gid=0;
}
prizeScroll.prototype.getPrizeNum=function(){
	//获取奖品号
	return this.prizeNum;
}
prizeScroll.prototype.setPrizeNum=function(prizeNum){
	//设置奖品号
	this.prizeNum=prizeNum;
}
prizeScroll.prototype.stop=function(){
	//停止
	//prizeScroll.log(‘stop‘);
	this._clearInterval();
}

var prizeAssembly={
	"1":"**币10枚",
	"2":"**币110枚",
	"3":"**币10枚",
	"4":"**币130枚",
	"5":"**币160枚",
	"6":"**币20枚",
	"7":"**币60枚",
	"8":"**币00枚"
}

var m=new prizeScroll({
	id:‘prize_wrap‘,
	callBack:function(prizeNum){
		alert("您中了 "+prizeAssembly[prizeNum]+" ");
	}
})
document.getElementById(‘prize_start‘).onclick=function(){
	m.setPrizeNum(1);
	m.start();
	//移除事件
	document.getElementById(‘prize_start‘).onclick=null;
}

</script>

其中奖品结果,奖品信息,可配置,方便修改。 

时间: 2024-11-01 21:54:24

javascript-实现小抽奖程序的相关文章

JavaScript简单抽奖程序的实现及代码

JavaScript简单抽奖程序的实现及代码 1.需求说明 某公司年终抽奖,需要有如下功能 1)可以根据实际情况设置到场人数的最大值 2) 点击"开始",大屏幕滚动,点击"停止",获奖者的编号出现在大屏幕上 3)在界面里显示全部奖项获奖人编号 4)不重复获奖 5)不会因为输入错误而导致抽奖结果异常. 2.代码呈上 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">

javascript实现抽奖程序

昨天开年会的时候看到一个段子说唯品会年会抽奖,结果大奖都被写抽奖程序的部门得了,CTO现场review代码. 简单想了一下抽奖程序的实现,花了十几分钟写了一下,主要用到的知识有数组添加删除,以及ES5 数组新增的indexOf,filter方法, 为了刷新页面后仍能保存已中奖记录,用了localStorage存盘. 刚开始是用随机数直接取编号,发现要剔除已中奖的人很麻烦,如果重复要递归调用,如果中奖的人太多到最后随机数取到已中奖的人概率太大,所以换用两个数组实现,一个记录已中奖的号码,一个记录未

jQuery实现圆盘活动抽奖程序效果

<script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript" src="jQueryRotate.2.2.js"></script> <script type="text/javascript" src="jqu

javascript版的quine程序

引用自Wikipedia: 一个quine是一个计算机程序,它不接受任何输入,且唯一的输出就是自身的源代码. @cowboy (Ben Alman) 给出了一个用JavaScript写的quine程序: !function $(){console.log('!'+$+'()')}() 为什么这个quine能成功运行呢? 获得源代码 如果一个程序仅是由一个函数组成的,那么我们很容易获得这个函数的源代码:在大多数JavaScript引擎中,将一个函数转换成字符串就会返回它的源码. > functio

给大家分享12个或许能在实际工作中帮助你解决一些问题的JavaScript的小技巧

使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值.为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单.对于变量可以使用!!variable做检测,只要变量的值为:0.null." ".undefined或者NaN都将返回的是false,反之返回的是true.比如下面的示例: 01 function Account(cash) { 02 this.cash = cash; 03 this.hasMoney

jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现

在线实例 查看演示 完整代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv

公司新年网页抽奖程序 数字抽奖游戏JS特效

<!doctype html> <html> <head> <meta charset="utf-8"> <title>新年网页抽奖程序_河北电动叉车|石家庄展柜制作</title> <style type="text/css"> * {margin:0; padding:0;} ul,li {list-style-type:none;} body {overflow:hidden;

一个简单的抽奖程序

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>抽奖程序</title> 6 <script type="text/javascript" src="http://common.cnblogs.com/script/jquery.js"></script> 7

java版转盘抽奖程序

最近抽空弄了个转盘抽奖程序,属于半原创,是基于网络上分享的资源二次开发的. 由于未知最初出处,也不知本人搜寻的资源是属于第几手,因此暂无法给出转载链接. ---------- 如果其他人要转载本文,请加上本文链接,毕竟这算本人二次开发的小作品. --------- 下载地址: http://yunpan.cn/cjG2P5kBfvQ6H  提取码 ff7d --------- 本程序 效果如图所示: