问题描述
本来的语句如下:for(i=1;i<4;i++){document.all("S1_AZDrug"+i).value="";}aspx页面中分别有S1_AZDrug1,S1_AZDrug2,S1_AZDrug3相对应控件。工作正常。但现在把页面放到用户控件中,这样一来,加载页面后,原来ID为S1_AZDrug1,S1_AZDrug2,S1_AZDrug3的控件的ID就变了,变成系统自动分配的了?!我怎样修改我的javascript才能达到原来的要求。我试过如下:用document.all("<%=S1_AZDrug1.ClientID%>").value="";可以实现目的,但我不知道怎样利用循环来做???。javascript不认document.all("<%=S1_AZDrug"+i+".ClientID%>").value="".请大侠赐教!谢谢
解决方案
解决方案二:
你可以在for判断查找这些控件是不是包含这个S1_AZDrug,如果包含就是你要的控件了
解决方案三:
S1_AZDrug1,S1_AZDrug2,S1_AZDrug3这在个是服务端的ID,才会在这控件被调用时解释出来的HTML代码中有变,变化的规则是在ID前面加上这个控件ID,如控件的ID是SEA1,那么前面的ID会变成SEA1_S1_AZDrug1两个方式,1、直接用解释出来的ID:SEA1_S1_AZDrug12、改用客户端ID,如原来是<divid="AZDrug1"runat="server">改为<divid="AZDrug1">,若确实要用服务端的话,看下是否能在内层或外层再加上一个客户端的ID
解决方案四:
//.ascx里这样返回呢?publicstringS1_AZDrug1{get{return控件1.ClientID;}}publicstringS1_AZDrug2{get{return控件2.ClientID;}}publicstringS1_AZDrug3{get{return控件3.ClientID;}}然后其他不变。
解决方案五:
对了,应该是document.all("<%=S1_AZDrug"+i%>").value="".
解决方案六:
还有方法就是你给这三个控件加上name属性,它是不会变的,在用for(i=1;i<4;i++){document.getElementsByName("S1_AZDrug"+i).value="";}
解决方案七:
1楼的没看懂。能解释详细点吗?2楼的这句话没看懂:“变化的规则是在ID前面加上这个控件ID",什么是控件ID?另,必须用服务端的控件谢谢回复!
解决方案八:
4楼的其实定义了一个变量传到javascript端,我试一下,document.all("<%=S1_AZDrug"+i%>").value="".是否应该是document.all("<%=S1_AZDrug"+i+"%>").value="".5楼的不行,name同样变化了。
解决方案九:
还有方法就是你给这三个控件加上name属性,它是不会变的,在用for(i=1;i<4;i++){document.getElementsByName("S1_AZDrug"+i).value="";}
解决方案十:
引用7楼caiter的回复:
4楼的其实定义了一个变量传到javascript端,我试一下,document.all("<%=S1_AZDrug"+i%>").value="".是否应该是document.all("<%=S1_AZDrug"+i+"%>").value="".
我写错了。应该是定义了属性。你试了吗?
解决方案十一:
那就用得到所有的这个类型的标签,再判断它的ID是否包含S1_AZDrugdocument.form1.getElementsByTagName("");
解决方案十二:
9楼,这条语句document.all("<%=S1_AZDrug"+i+"%>").value="".不行,编译通不过。
解决方案十三:
10楼,那样太麻烦。我有很多控件的。
解决方案十四:
UP
解决方案十五:
其它我也没法了
解决方案:
xiexie
解决方案:
顶