预期功能:实现抽奖。不同的奖项在不同的范围产生。getLuckers()函数产生抽奖号码,产生奖项的范围、个数作参数。问题是第二次调用getLuckers()函数时,貌似死循环了...
代码如下,希望大家不吝赐教.
[code="js"]
Array.prototype.indexOf=function(substr,start){
var ta,rt,d='\0';
if(start!=null){ta=this.slice(start);rt=start;}else{ta=this;rt=0;}
var str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);
if(t==-1)return -1;rt+=str.slice(0,t).replace(/[^\0]/g,'').length;
return rt;
}
function GoodLuck()
{
var str1="1-5";//
var str2="6-24";
var luckers=new Array();
var luckers1=new Array();
luckers=getLuckers(str1,2);
alert(luckers);
luckers1=getLuckers(str2,3);
alert(luckers1);
}
function getLuckers(str,count)
{
var flag=0;
var begin=0;
var start=0;
var end=0;
var range=new Array();
flag=str.indexOf("-");
if(flag==-1)
{
range=str.split(",");
}else
{
start=begin=str.substr(0,flag);
end=str.substr(flag+1);
alert(begin);
alert(end);
for(;begin<=end;begin++)
{
range.push(begin);
}
}
var luckers=new Array();
var v=end-start+1;
if(v>1)
{
for(var i=0,j=0;j<count;i++)
{
var temp=parseInt(Math.random()*(v+1)+start) ;
if(-1!=range.indexOf(temp))
{
var index=range.indexOf(temp);
range.splice(index, 1);
luckers.push(temp);
j++;
}
}
}else
{
for(var i=0,j=0;j<count;i++)
{
var temp=parseInt(Math.random()*185+1)
if(-1!=range.indexOf(temp))
{
var index=range.indexOf(temp);
range.splice(index, 1);
luckers.push(temp);
j++;
}
}
}
return luckers;
}
[/code]