日期:2014-05-16  浏览次数:20500 次

很奇怪的问题
我要删除一个select里面的所有option再加入新的option
删除的代码是这样的
for(var   i=0;i <document.getElementById( "ws_data "+id).options.length;i++)   {
          {
      document.getElementById( "ws_data "+id).removeChild(document.getElementById( "ws_data "+id).options[i]);
}
但是会出错   删除后加入新的option里面还会有删除前的option
但我只要把for(var   i=0;i <document.getElementById( "ws_data "+id).options.length;i++)   改成for(var   i=document.getElementById( "ws_data "+id).options.length-1;i> =0;i--)就正确了,也就把从小到大循环改成从大到小循环,我想不明白这是什么道理,那位高手指点一下

------解决方案--------------------
1.试着解释你的这种现象.
options[i]中的这个i是会变化的,即当你从小往大删除时,options[0]这项始终都是有的,你删除一项后他们会再自动编号(从0开始),所以从小到大删除时,只删除options[0]就可以.
而从大往小删除时,就很容易明白了.

2.删除select的options项
可以使用options.length=0实现