• javascript-实现小抽奖程序


    直接上代码

    <style>
    *{ margin: 0; padding:0;}
    .prize_wrap{
    	 300px;
    	height: 150px;
    }
    .prize_wrap .active{	
    	position: absolute;
    	 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;
    	 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>
    

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

  • 相关阅读:
    pyinstaller模块
    使用reduce方法数组去重
    Linux的关机与重启命令
    splice和slice的区别
    发现splice的新大陆
    text-decoration和outline
    前端中关于堆和栈的那些事
    git
    前端代码规范
    弹性布局在项目中的使用示例
  • 原文地址:https://www.cnblogs.com/wengxuesong/p/3990178.html
Copyright © 2020-2023  润新知