crazystrive 2010-12-24 10:06
浏览 249
已采纳

关于js中for循环的疑问

预期功能:实现抽奖。不同的奖项在不同的范围产生。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]

  • 写回答

2条回答 默认 最新

  • CaiHuajiang 2010-12-24 10:26
    关注

    第39行有错

    start=begin=str.substr(0,flag);

    end=str.substr(flag+1);

    alert(begin);

    alert(end);

    for(;begin<=end;begin++)

    {

    range.push(begin);

    }

    当begin=6时,end=24时,由于两者都是字符串,导致6 > 24
    所以在这之前需要进行类型转换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站