如果你在循环里面要定义i=0;就是死循环。
如果定义for(i=10;i>0;i--)会循环10次结束

解决方案 »

  1.   

    是这样的,今天看javascript书有个是这么说的
    代码为:function clearSelectBox(selectBox){for(var i=0;len=selectBox.options.length;i<len;i++){
     selectBox.remove(i);
    }
    }
    这个是书介绍选择框表单的删除摸个option项的方法。
    selectBox.options.length是所有的option项数,最后他说,每次循环都是删除第一项,我不懂
      

  2.   

    每次调用function clearSelectBox()进入for循环时,i都初始化为0。
      

  3.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
      

  4.   


    你这个删除selectBox的每一个选项   他这个循环跟你举例子的不同  他这个每个option初始化的时候都已经有一个标识了  从0到length-1的标识  所以你删除了第一个 接着i++ 后 继续删除第二个(第一个option已经删除) 所以也是删除第一个option 
      

  5.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
      

  6.   

    int sum=10;
    int c=0;
    for(int i=0;c=sum;i<c;i++){
    do(i);
    sum--;
    }
      

  7.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
      

  8.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
      

  9.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
    打错了for(var i=0,len=selectBox.options.length;i<len;i++)是这样
    因为这个len每次会变,我认为的是i会递增。然后书上说这个函数是每次循环移除第一个。所以我认为书中的意思是for循环每次都会把i再赋值为0;这就颠覆我以前的想法
      

  10.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
    打错了for(var i=0,len=selectBox.options.length;i<len;i++)是这样
    因为这个len每次会变,我认为的是i会递增。然后书上说这个函数是每次循环移除第一个。所以我认为书中的意思是for循环每次都会把i再赋值为0;这就颠覆我以前的想法
    了然,其实那个i++没起实际作用,直接在外边var i=0 for(;i<selectBox.options.length;)这样就够了,不用每次都赋值,这个写法很随意的,应该没什么疑问了吧。
      

  11.   

    不知道是不是这样for(i=0;;){
    do(i);
    }
    哈哈
      

  12.   

    直接弄个
    while(size>0)
    {
    remove(0);
    size=..
    }
    这样就好了
      

  13.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
    打错了for(var i=0,len=selectBox.options.length;i<len;i++)是这样
    因为这个len每次会变,我认为的是i会递增。然后书上说这个函数是每次循环移除第一个。所以我认为书中的意思是for循环每次都会把i再赋值为0;这就颠覆我以前的想法
    了然,其实那个i++没起实际作用,直接在外边var i=0 for(;i<selectBox.options.length;)这样就够了,不用每次都赋值,这个写法很随意的,应该没什么疑问了吧。
    i的初始值为0,然后下一次循环应该是1,len应该-1;不懂你说的i++不起作用是什么意思;
      

  14.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
    打错了for(var i=0,len=selectBox.options.length;i<len;i++)是这样
    因为这个len每次会变,我认为的是i会递增。然后书上说这个函数是每次循环移除第一个。所以我认为书中的意思是for循环每次都会把i再赋值为0;这就颠覆我以前的想法
    了然,其实那个i++没起实际作用,直接在外边var i=0 for(;i<selectBox.options.length;)这样就够了,不用每次都赋值,这个写法很随意的,应该没什么疑问了吧。
    i的初始值为0,然后下一次循环应该是1,len应该-1;不懂你说的i++不起作用是什么意思;我从新说一下
    一个有顺序的容器有0,1,2,3,4 这5个元素
    然后上面的循环在第一次进去的时候删了第0个,也就是0
    所以容器还剩下1,2,3,4
    现在排序的话数字1是第0个,数字2是第1个,数字3是第2个,数字4是第3个
    再次循环i应该等于1了吧,但是len=selectBox.options.length;len现在就是4
    再做删除操作,应该删的是第1个也就是数字2;也就是没去删除数字1
    我不知道是不是我理解错误,但是我就是这么想的
      

  15.   

    呵呵楼主把自己绕进去了,既然你要求每次删除第一项,而i++之后会出现无法删除第一项的情况那,还要i++干嘛呢,这个{ 
    function clearSelectBox(selectBox){
    for(var i=0;len=selectBox.options.length;i<len;i++){
     selectBox.remove(i);
    }
    }
    }在java上相当于for(int i=0;i<selectBox.options.length;i++){
    do(i)
    }其中这玩意selectBox.options.length是不变的,它要是变了你删不完所有记录,即使能删完得多写些东西逻辑变复杂了,不划算;
    而它要是变的话最简单的写法for(true){do(0)};当然是死循环.
    改写一下
    boolean f=true;
    int i=selectBox.options.length;
    for(f){
    do(0);
    if(i<=0){f=false;}
      

  16.   

    这个你你那个循环不一样,这个循环每次是删除第一个元素,selectBox的大小每次都在变
    这种做法还是比较常见的,i每次都是零,leng每次都是变化的,第一次删除第一个元素后,第二个元素就成了第一个 元素,而你说的for(int i=0;i<10;i++)里面,条件i<10  10是不变的,LZ还有什么疑问吗?
    我想问的是在循环的时候,i不应该是递增的嘛吗?
    第一次进去删除第0个,然后i变为1,length-1;然后不应该是删除第1个的吗
    不好意思没有仔细看,你给的例子for(var i=0;len=selectBox.options.length;i<len;i++)这个里面怎么三个分号,你是不是看错啦。应该没有i++吧,你确定这个能正常运行。
    打错了for(var i=0,len=selectBox.options.length;i<len;i++)是这样
    因为这个len每次会变,我认为的是i会递增。然后书上说这个函数是每次循环移除第一个。所以我认为书中的意思是for循环每次都会把i再赋值为0;这就颠覆我以前的想法
    了然,其实那个i++没起实际作用,直接在外边var i=0 for(;i<selectBox.options.length;)这样就够了,不用每次都赋值,这个写法很随意的,应该没什么疑问了吧。
    i的初始值为0,然后下一次循环应该是1,len应该-1;不懂你说的i++不起作用是什么意思;我从新说一下
    一个有顺序的容器有0,1,2,3,4 这5个元素
    然后上面的循环在第一次进去的时候删了第0个,也就是0
    所以容器还剩下1,2,3,4
    现在排序的话数字1是第0个,数字2是第1个,数字3是第2个,数字4是第3个
    再次循环i应该等于1了吧,但是len=selectBox.options.length;len现在就是4
    再做删除操作,应该删的是第1个也就是数字2;也就是没去删除数字1
    我不知道是不是我理解错误,但是我就是这么想的

    再次循环,var i=0,i不是1还是删除第0个也就是1;没次都删除第0个,知道length=0,i-0条件不符,就不在删除。我就愁了。
      

  17.   

    但是在for循环里面i是递增 啊