//这个i 和初始化的i 不是同一个变量?,真不知道它JS是怎么运行的
js for语句 的问题看一下 alert 就知道了

解决方案 »

  1.   

    是同一个变量,只是每删一个后,select 就变成一个新的select ,
    再删第2个的时候他又是从0开始算的
      

  2.   

    i=0;     //这个i 和初始化的i 不是同一个变量?,
    这里我已负傎为0了 为什么 alert(i+"body");和alert(i+"head") 弹出来的傎不一样
      

  3.   

    很简单,删除时要用降序!!!JS 的行为完全正常,是 LZ 的思维不正常!哈,开个玩笑,冷静地想一想,很容易理解的!for( var i=e.options.length - 1; i>=0; i--)
    {
        ...
    }
      

  4.   

    还是贴全了吧,免得 LZ 又想歪了,哈L@_@K! function delSelect(e)
     {
        for( var i=e.options.length - 1; i>=0; i--)
        {
            if( e.options[i].selected)
            {
                e.remove(i);
            }
        }
      }
      

  5.   

    yixianggao 的
    for( var i=e.options.length - 1; i>=0; i--)
    的确是个简单的好方法但是我这样写理论上应该是行的通呀!
        for( var i=0;i<e.options.length;i++){
          if( e.options[i].selected){
           e.remove(i);
           i=0;     //这个i 和初始化的i 不是同一个变量?,真不知道它JS是怎么运行的
           //如果有选择了,就把i=0,再丛头开始判断,但是 i=0;完 对 i<e.options.length 的i没起作用
           }
    }不知道 js 的for 语句是怎么走的
      

  6.   

    for( var i=0;i<e.options.length;i++){
          if( e.options[i].selected){
           e.remove(i);
           i--; //要把i=0;改成 i--; 就可以    
             }
    }
      

  7.   

    LZ 似乎对 for 的运行过程并不了解!!!// var i=0 仅在进入循环时执行一次!
    // i<e.options.length 在首次及后续循环开始前判断!
    // i++ 每次循环结束时执行!
    for( var i=0;i<e.options.length;i++)
    {
          if( e.options[i].selected){
           e.remove(i);
           //i=0; // 之后马上执行 i++,变成了 1
                // 因此如果要符合 LZ 的正向思维方式的话,必须写成 i=-1
           i = -1;
    }注:降序删除法才是正途,简捷易懂,哈
      

  8.   

    HOHO,偶也碰到过这个问题.
    LZ可以试试"添加删除表格行",很快就明白了.
    楼上说得很对.
      

  9.   

    主要原因是你把e.options.length放在循环里了,删除一个,那么e.options.length的值也减一。
    应该设个变量var len = e.options.length
    然后(var i = 0 ; i < len ; i++ ) 或者 (var i = len-1 ; i >= 0 ; i--)都可以吧。