<script language="javascript">
function mask(str,begin,end,char){
//解决数字number类型的错误。
str=""+str;
var fstStr = str.substring(0,begin);
var scdStr =str.substring(begin,end);
var lstStr = str.substring(end,str.length);
var matchExp = /\w/g;
maskStr = fstStr+scdStr.replace(matchExp,char)+lstStr;
return maskStr;
}
//定义一个数组,用来存放显示内容
var arrAtts=new Array();
//N从排序前几名获取0随机,
var cutFrom =0;
//如果是截取排序前几名
// see cutFrom
var numCut= cutFrom==0?100:cutFrom;
for(var i =0 ;i<numCut;i++){
arrAtts[i]=i+1399999999;
}
//如果剩余参与者为0
if(arrAtts.length==0){
alert("已经没有参与者,抽奖将结束!");
//转到抽奖结果页面显示最后抽奖结果
}
//滚动速度
var rollSpeed=1000;
//中奖数量
var winnerCount=10;
//自动抽奖n值自动开始妙数,手动0
var isAutoStart =0;
//支持参与多个抽奖1,不支持0
var isMutil = 0;
//掩码从第三位开始覆盖3个字符F
var masking ='3,3,*';
//中奖结果
var prizewinners = new Array();
//定义定时器对应对象以供停止时去除滚动
var interval;
//定义数组原型方法,获取随机值,由于数组可能不同索引有相同的值,这里只是返回值
//所以不支持重复参与功能,可以提供滚动时使用
Array.prototype.random=function() {
var a=this;
var len=a.length;
var value;
value = parseInt(Math.random()*len);
return a[value];
}
//the array include the indexes that has return by function random
Array.prototype.arrIWR=new Array();
//定义数组原型方法,获取随机索引
Array.prototype.rdmIdx=function() {
var a=this;
var arrExisted = a.arrIWR;
var len=a.length;
var value;
//获取无重复索引
do{
value = parseInt(Math.random()*len);
}while(this.repeat(value));
//增加随机索引
arrExisted[arrExisted.length]=value;
return value;
}
Array.prototype.repeat=function() {
var array = this.arrIWR;
alert(array);
for (s = 0; s <array.length; s++) {
thisEntry = array[s].toString();
if (thisEntry == value) {
return true;
}
}
return false;
}
function init(){
document.all.txtRoll.value =masking=="0"?arrAtts[0]:setMask(arrAtts[0]);
//如果是自动抽奖
if(isAutoStart>0){
setTimeout("showPrizewinners()",isAutoStart*1000);
document.all.btnStart.disabled ="disabled";
document.all.btnStop.disabled = "disabled";
document.all.txtRoll.disabled = "disabled";
}
}
//根据设置过滤掩码
function setMask(str){
var masks = masking.split(",");
var begin = masks[0]-1;
var end = begin+parseInt(masks[1]);
var char = masks[2];
return mask(str,begin,end,char);
}
//滚动抽奖号码
function rollNumbers(){
var value = arrAtts.random();
document.all.txtRoll.value =masking=="0"?value:setMask(value);
}
//开始抽奖
function startRoll() {
//如果中奖数量大于参与者的数量,则开始抽奖
if(checkCount()){
clearInterval(interval);
interval=setInterval("rollNumbers()",rollSpeed);
document.all.btnStart.disabled = "disabled";
document.all.btnStop.disabled = "";
}else{
showResult();
}
}
//停止滚动
function stopRoll() {
clearInterval(interval);
document.all.btnStart.disabled ="";
document.all.btnStop.disabled = "disabled";
}
//显示中奖结果
function showPrizewinners(){
//根据中奖数量获取中奖结果
//如果剩余参与者小于中奖者数量的话直接获取所有剩余参与者为中奖者
if( winnerCount>arrAtts.length){
for(var i = 0; i<winnerCount;i++){
var index = arrAtts.rdmIdx();
//获取无重复的索引值,支持多投多奖
prizewinners[i] = arrAtts[index];
}
}
showResult();
//获取下一个奖项的信息
}
//initMarquee();
//自动 setInterval("lottery()",1000);
//检查剩余参与者
function checkCount(){
if( winnerCount<=arrAtts.length){
prizewinners = arrAtts;
alert("剩余参与者全部中奖!");
return false;
}
return true;
}
//查看中奖结果
function showResult(){
alert("中将结果:"+prizewinners.toString());
}
</script>
</head>
<body onLoad="init();">
<table align="center">
<tr><td colspan="2"><input type="text" name="txtRoll"/></td></tr>
<tr align="center"><td><input type="button" value="开始" name="btnStart"
οnclick="startRoll(); "/></td><td><input type="button" value="停止" name="btnStop"
οnclick="stopRoll();showPrizewinners();" disabled="disabled"/></td></tr>
</table>
</body>