抽奖器html

1、环境要求:用html4配合javascript写的抽奖器,只要电脑上有浏览器就可以运行。

2、功能:支持在抽奖过程中,更换当前要抽奖的人数。

3、缺点:

a.当人数过多时,可能有性能问题。

b.未对输入的人数作校验。                   

源代码如下:

<!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>
<title>抽奖</title>
<meta http-equiv="content-type"content="text/html; charset=UTF-8"/>
<script type="text/javascript">
function setlistitem(){
	document.getElementById('rewardlist').innerHTML='';
	document.getElementById('listdiv').innerHTML='';
	narr=new Array();
	var pnum=parseInt(document.getElementById('pn').value,10), seln=parseInt(document.getElementById('spn').value,10);
	var selh=seln*31;
	document.getElementById('rewardlist').style.height=selh+'px';
	document.getElementById('maincon').style.height=selh+'px';
	for (var i=1; i<=pnum; i++){narr.push(i);}
	for (var i=1; i<pnum; i++){
		var ri=parseInt(Math.random()*(pnum-i)+i,10);
		var t=narr[ri];
		narr[ri]=narr[i-1];
		narr[i-1]=t;
	}
	drawlist();
}
function setbatch(){
	var seln=parseInt(document.getElementById('spn').value,10);
	var selh=seln*31;
	document.getElementById('rewardlist').style.height=selh+'px';
	document.getElementById('maincon').style.height=selh+'px';
	document.getElementById('rewardlist').innerHTML='';
}
function drawlist(){
	document.getElementById('listdiv').innerHTML='';
	var bl = narr.length, tmparr = new Array();
	for (var y=0;y<2;y++){
	for (var i=0; i<bl; i++){
		tmparr.push(narr[i]);
	}
	}
	var hs='';
	for (var i=0; i<tmparr.length; i++){
		hs+='<div class="item" id="n_'+i+'">'+tmparr[i]+'</div>';
	}
	document.getElementById('listdiv').innerHTML=hs;
	document.getElementById('listdiv').style.marginTop='0px';
}
var scrollTime=null, scrollFlag=false, narr;
function scrollitem(){
	if (scrollFlag){
		scrollTime = setTimeout('scrollitem()',70);
	}
	var mh=parseInt(document.getElementById('listdiv').style.marginTop,10);
	mh=mh-31;
	var pnum=parseInt(document.getElementById('pn').value,10);
	if (mh<=pnum/2*(-30)){
		mh=0;
	}
	document.getElementById('listdiv').style.marginTop=mh+'px';
}
function doplay(){
	if (scrollFlag){
		scrollFlag=false;
		clearTimeout(scrollFlag);
		document.getElementById('playbut').value='开始抽奖';
		var mh=parseInt(document.getElementById('listdiv').style.marginTop,10), pnum=parseInt(document.getElementById('pn').value,10), seln=parseInt(document.getElementById('spn').value,10);
		var si=mh*(-1)/31;
		var rewardarr = new Array();
		for (var ri=0;ri<seln; ri++){
			rewardarr.push(parseInt(document.getElementById('listdiv').childNodes[si+ri].innerHTML,10));
		}
		narrtmp = new Array();
		for (var xi=0;xi<narr.length;xi++){
			var ni=0, s=true;
			for (var yi=0;yi<rewardarr.length;yi++){
				if (narr[xi]==rewardarr[yi]){s=false;break;}
			}
			if (s){
				narrtmp.push(narr[xi]);
			}
		}
		narr=new Array();
		for (var xi=0;xi<narrtmp.length;xi++){
			narr.push(narrtmp[xi]);
		}
		drawlist();
		
		var hs = '';
		for (var i=0; i<rewardarr.length; i++){
			hs+='<div class="item">'+rewardarr[i]+'</div>';
		}
		document.getElementById('rewardlist').innerHTML+=hs;
	}else{
		scrollFlag=true;
		scrollitem();
		document.getElementById('playbut').value='停止';
	}
}
</script>
<style type="text/css">
.item{width:400px;height:30px;line-height:30px;border-bottom:1px solid #000;text-align:center;font-weight:700;font-size:25px;}
.itemlist{width:430px;height:180px;border:1px solid #000;}
.itemcon{width:400px;}
.setdiv{width:803px;height:30px;line-height:30px;text-align:center;}
</style>
</head>
<body>
<div class="setdiv"></div>
<div class="setdiv">
	参加总人数
	<input id="pn" value="20" type="text"/>
	<input value="重新开始" οnclick="setlistitem()" type="button"/>
	每次抽得个数
	<input id="spn" value="3" type="text"/>
	<input value="设置中奖人数" οnclick="setbatch()" type="button"/>
</div>
<table border="1" style="width:800px;">
<tr><td align="center"><h2>抽奖区</h2></td>
<td align="center"><h2>中奖号码</h2></td></tr>
<tr>
	<td>
	<div id="maincon" class="itemlist" style="overflow:hidden;">
	<div id="listdiv" class="itemcon" style="float:left;margin-top:0px"></div>
	</div>
	</td>
	<td>
	<div id="rewardlist" class="itemlist" style="overflow:scroll;">
	
	</div>
	</td>
</tr>
<tr>
	<td align="center" colspan="2">
	<input value="开始抽奖" id="playbut" οnclick="doplay()" style="width:300px;height:40px;" type="button"/>
	</td>
</tr>
</table>
</body>
</html>

算法只是简单的洗牌,如有问题,欢迎大家指正。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值