一个很怪的问题,增加alert就能执行,去掉就用不了

beipanjiyi 2008-08-06 04:40:05
问题是这样的,我执行一个动态改变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')">



...全文
137 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
neo_yoho 2008-08-06
  • 打赏
  • 举报
回复
IE7下去掉alert也正常啊
ff下改成c.options[i]也能执行啊
daols 2008-08-06
  • 打赏
  • 举报
回复
个人认为和页面是否加载完毕无关,,,因为这个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]。。。
Gdj 2008-08-06
  • 打赏
  • 举报
回复
加载顺序的问题。因为你将js写到html的前面去了。能不能执行就看网速如何。如果执行到alert的部位时,html还没加载完,当然下面的代码不会有效。

解决办法是将js放到html的最后面。或是将alert后的内容放到body的onload事件中执行。
tengfei3003 2008-08-06
  • 打赏
  • 举报
回复
function check(c,k)
{
for (var i=0;i <c.options.length ;i++ )
{
if (c.options(i).value==k)
{
c.selectedIndex =i;
}
}
}
这可以执行的啊
s_liangchao1s 2008-08-06
  • 打赏
  • 举报
回复
ie6没问题
sheyanfen 2008-08-06
  • 打赏
  • 举报
回复
不会啊,按你的代码,去掉alert一样是可以的.
可能是缓存的问题?
cloudgamer 2008-08-06
  • 打赏
  • 举报
回复
lz那个好像正常哦
s_liangchao1s 2008-08-06
  • 打赏
  • 举报
回复

options[i]//

tengfei3003 2008-08-06
  • 打赏
  • 举报
回复
alert(1==1);
换成 setTimeout(100);

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧