问题描述
我要做一个省份和城市联动的控件.<selectname="prov"id="prov"onChange="changelocation(document.form1.prov.options[document.form1.prov.selectedIndex].value)"style="width:120px"language="javascript"onclick="returnprov_onclick()"runat="server"><optionvalue=""selected>===选择省份===</option><optionvalue=北京市>北京市</option><optionvalue=天津市>天津市</option><optionvalue=上海市>上海市</option>...</select>这是省份的下拉菜单.<selectname="city"id="city"style="WIDTH:120px"runat="server"></select>这是城市的下拉菜单.<scriptlanguage="JavaScript">varonecount;onecount=0;subcat=newArray();subcat[0]=newArray("石家庄市","河北省","石家庄市");subcat[1]=newArray("唐山市","河北省","唐山市");subcat[2]=newArray("秦皇岛市","河北省","秦皇岛市");....onecount=341;functionchangelocation(locationid){document.form1.city.length=0;varlocationid=locationid;vari;for(i=0;i<onecount;i++){if(subcat[i][1]==locationid){document.form1.city.options[document.form1.city.length]=newOption(subcat[i][0],subcat[i][2]);}}}</script>这是js.现在出现的问题是当省份和城市的下拉菜单不作为服务器控件运行时是可以用的.但是我给他们加上runat="server"这句话后就出现标题上的错误,是什么原因呢?
解决方案
解决方案二:
但是我给他们加上runat="server"这句话后就出现标题上的错误====加上之后,select的客户端name/id可能发生了变化除了查看生成的html源码,硬编码进入id以外,你可以动态的绑定通过prov.ClientID/UniqueID获取客户端id/name其实你这里只要changelocation(this.value)<selectname="prov"id="prov"onChange="changelocation(this.value)"style="width:120px"language="javascript"onclick="returnprov_onclick()"runat="server">
解决方案三:
或者changelocation(document.form1.<%=prov.ClientID%>.options[document.form1.<%=prov.ClientID%>.selectedIndex].value)