不是应该document.getELementById("drp2").options[i].removeNode()这样吗,我也没试过   

解决方案 »

  1.   

    <select id="aaa">
    <option>1</option>
    <option>2</option>
    </select>
    <SCRIPT   LANGUAGE="JavaScript">
    <!--
    document.getElementById("aaa").options.length=0
    //-->
    </SCRIPT>
      

  2.   

    脚本提示错误:该对象不支持此属性或方法。drp2.options.remove(i);   
      

  3.   

    我知道楼主的问题了,索引是以0开始的,所以一般人家是i=0;i<xx.length,楼主用i--就应该是i=xx.length-1;i>=0这样。至于用xx.options.remove(i)、xx.options[i].removeNode()、xx.options.length=0都可以,但听说removeNode好像在FF下不工作。
      

  4.   

    我改成这样for (var i = 0;i<drp2.length;i++)
        { 
              drp2.options.remove(i); 
          } 
    就没有错误了,但drp2下拉还是会有值,为什么会这样
      

  5.   

    清除所有options的话,一句代码就可以了var drp2=document.getElementById("<%=hylb_name.ClientID%"); 
    drp2.options.length=0;///////清除所有options
      

  6.   

    我用了这句drp2.options.length=0;
    脚本提示错误:该对象不支持此属性和方法
      

  7.   

    如果你要循环来清除的话,用while循环比较好用while
    while(drp2.options.length>0)
    {
      drp2.options.remove(0);  
    }for
    for(var i=0;i<drp2.options.length;)
    {
      drp2.options.remove(i);  
      i=0;//========这里把i置0,这样才能删除所有项
    }
      

  8.   

    var   drp2   =   document.getElementById(" <%=hylb_name.ClientID%> "); 
    alert(drp2)  //看看这里,你的drp2   取的有问题
      

  9.   

    楼上大哥的方法我都试了,总是提示:对象不支持此属性和方法
    我想是不是drp2.options.length这句的问题
      

  10.   


    使用 drp2.options.length=0 可以快速清除
    一般情况是这样使用remove(),应从最后索引开始移除
    原因是因为如果从0索引开始移出,那么移除后,1索引自动会编程0索引,后面的索引依次类推
    for(var i=drp2.options-1;i>=0;i--)
    {
      drp2.options.remove(i);  
      i=0;//========这里把i置0,这样才能删除所有项
    }
      

  11.   

    修正
    for(var   i=drp2.options-1;i> =0;i--)
    {
        drp2.options.remove(i);
    }
      

  12.   

    var       drp2       =       document.getElementById("   <%=hylb_name.ClientID%>   ");   
    alert(drp2)     //看看这里,你的drp2       取的有问题
    没什么问题吧,我看过了,有值啊
      

  13.   

    看你对象取到了没有,是不是null
    参考10楼代码
      

  14.   


    var s = document.getElementById("<%=hylb_name.ClientID%>   ");
    var optionArray = new Array();for (var i=0;i<s.options.length;i++)
        {optionArray.push(s2.options[i]);}
            
    for (var j in optionArray)
        {s.options.remove(optionArray[j]);}        
      

  15.   

    alert(drp2.options.length);也显示了 ,18
      

  16.   

    你的服务器端控件是不是 hylb_name 这个名字还是别的 
      

  17.   


    以下这种删除方法是不正确的,只是看起来正确,实际并非如此
    for(var i=0;i<drp2.options.length;i++)
    {
      drp2.options.remove(i);  
      /*
       假设有3个option,那么length为3,初始条件为i<3               i为0(0<3;i++)
       但是,当执行了一次删除语句之后,length就变为2,i也加了1,这时   i为1(1<2;i++)
       第二次删除时,lenght变为了1,i从1又加了1                    i为2(2<1,i++) 显然,并没有删除完,就使循环退出了  关键是,lenght属性是不断变化的
      */
    }
      

  18.   

    var drp2 = document.getElementById("<%=hylb_name.ClientID%>");
       alert(drp2.options.length);
       for(var i = drp2.options.length-1;i>=0;i--)
       {
          drp2.options.remove(i);///////这句通不过,现在。“对象不支持此属性和方法 

       }
      

  19.   

    回复19 楼:你的服务器端控件是不是   hylb_name   这个名字还是别的   是这个名字<asp:dropdownlist class="selectList" id="hylb_name" runat="server"></asp:dropdownlist>
      

  20.   


    我把21楼代码运行,去掉了i> =0; 之间的空格 完全正常
      

  21.   

    var drp2 = document.getElementById("<%=hylb_name.ClientID%>");
       alert(drp2.options.length);
       for(var i = drp2.options.length-1;i>=0;i--)
       {
          drp2.options.remove(i);
       }我这里怎么没通过呢?郁闷
      

  22.   


    你先把drp2.options.remove(i);  改为window.alert(drp2.options[i].value)试试,看能弹出不
      

  23.   


    你先把drp2.options.remove(i);  改为window.alert(drp2.options[i].value)试试,看能弹出不
      

  24.   

    回复 26楼:drp2.options.length=0;这个可以的楼上的我用了,还是提示错误:对象不支持此属性和方法
      

  25.   

    回复:我本有心 你先把drp2.options.remove(i);     改为window.alert(drp2.options[i].value)试试,看能弹出不 可以的
      

  26.   

    回复:我本有心   你先把drp2.options.remove(i);           改为window.alert(drp2.options[i].value)试试,看能弹出不   可以的弹出
      

  27.   

    现在就这样子:
    var drp2 = document.getElementById("<%=hylb_name.ClientID%>");
       
       for(var i = drp2.options.length-1;i>=0;i--)
       {
          //drp2.options.remove(i);/////////////////////这句过不去
          //window.alert(drp2.options[i].value);
       }
      

  28.   

    你的这段脚本处于什么位置
    会不会是hylb_name控件还没生成 你就开始调用了
      

  29.   

    就清除select所有的options的话都是使用select.options.length=0;的,你的怎么清除不了,郁闷拉哈~
      

  30.   

    发你生成的html页面的代码上来,还不相信了怎么可能select.options.length=0; 会出错...
      

  31.   

     <select name="_ctl1:BodyContentRegion:_ctl1:_ctl0:hylb_name" id="_ctl1_BodyContentRegion__ctl1__ctl0_hylb_name" class="selectList">
    <option value="01011">谷物及其他作物的种植</option>
    <option selected="selected" value="01012">蔬菜、园艺作物的种植</option>
    <option value="01013">水果、坚果、饮料和香料作物的种植</option>
    <option value="01014">中药材的种植</option>
    <option value="02021">林木的培育和种植</option>
    <option value="02022">木材和竹材的采运</option>
    <option value="02023">林产品的采集</option>
    <option value="03031">牲畜的饲养</option>
    <option value="03032">猪的饲养</option>
    <option value="03033">家禽的饲养</option>
    <option value="03034">狩猎和捕捉动物</option>
    <option value="03039">其他畜牧业</option>
    <option value="04041">海洋渔业</option>
    <option value="04042">内陆渔业</option>
    <option value="05051">农业服务业</option>
    <option value="05052">林业服务业</option>
    <option value="05053">畜牧服务业</option>
    <option value="05054">渔业服务业</option></select>
      

  32.   

    我是这样写的
    d = document.getElementById("DBranch_No");
    //将select  中值清空 ie
    if (d.options.length>0)
    {
    for(j=d.options.length;j>=0;j--)
    {
    try{
    d.options.remove(j);//ie
    }
    catch(e)
    {
    d.options[j]=null;//ff
    }
    }
    }