问题是这样的,我执行一个动态改变select选项的方法,结果如果加上alert就能正常改变,不加就改变不了,请哪位大侠帮忙看一下,谢谢了。------------------------------------------------------------------------
在处理修改页面的时候,经常会出现更改select列表取值的问题,以下为代码:<SCRIPT LANGUAGE="JavaScript">
<!--
function check(c,k)
{
for (var i=0;i<c.options.length ;i++ )
{ alert(1==1);
if (c.options(i).value==k)
{
c.selectedIndex =i;
}
}
}
//-->
</SCRIPT><FORM METHOD=POST ACTION="" name="myform">
<SELECT NAME="hehe">
    <OPTION VALUE="beijing" SELECTED>北京</option>
    <OPTION VALUE="shanghai">上海</option>
    <OPTION VALUE="guiling">桂林</option>
    <OPTION VALUE="guangzhou">广州</option>
    <OPTION VALUE="chengdu">成都</option>
</SELECT>
</FORM>
<INPUT TYPE="button" NAME="" value="改变" onclick="check(document.myform.hehe,'guiling')">

解决方案 »

  1.   

    alert(1==1); 
    换成  setTimeout(100);
      

  2.   

    不会啊,按你的代码,去掉alert一样是可以的.
    可能是缓存的问题?
      

  3.   

    function check(c,k) 

      for (var i=0;i <c.options.length ;i++ ) 
      { 
         if (c.options(i).value==k) 
         { 
             c.selectedIndex =i; 
         } 
      } 

    这可以执行的啊 
      

  4.   

    加载顺序的问题。因为你将js写到html的前面去了。能不能执行就看网速如何。如果执行到alert的部位时,html还没加载完,当然下面的代码不会有效。解决办法是将js放到html的最后面。或是将alert后的内容放到body的onload事件中执行。
      

  5.   

    个人认为和页面是否加载完毕无关,,,因为这个function是在鼠标点击按钮时才触发的,,,按理说就应该写在按钮前边,,,onclick="check(document.myform.hehe,'guiling')"
    这个,我认为可以写在select里边,类似“<select name="hehe" id="sid1" onchange="function();" onclick="function();">”,,另外就是document.myform.hehe最好用getElementById,不然会和非IE浏览器不兼容产生错误,,最后就是2楼说的,c.options(i)改成c.options[i]
      

  6.   

    IE7下去掉alert也正常啊
    ff下改成c.options[i]也能执行啊