<%int index=0;%>
<input type="checkbox" name="checkboxSelect" value="<%=index++%>"/>
function selectInsured(){
var elements=document.getElementsByName("checkboxSelect");
var policyno;
for(i=0;i<elements.length;i++){
if(elements[i].checked){
policyno=document.getElementsByName("policyNo")[i].value;
}
}
document.forms("fm").action = "/claim/processRegist.do?actionType=getRelatedPartyInsured&policyNo="+policyno+"&isSelect=yes";
document.forms("fm").target = "RelatedPartyInsuredFrame";
document.forms("fm").submit();
}上面是jsp的代码,在平时都是正常的,但是在某个用户操作的时候,elements.length就会多一倍,如果正常状态是13,就会变成26,遍历的时候也会从13开始,只有一个用户是这样,其他人都没问题,有大佬知道该怎么办吗
<input type="checkbox" name="checkboxSelect" value="<%=index++%>"/>
function selectInsured(){
var elements=document.getElementsByName("checkboxSelect");
var policyno;
for(i=0;i<elements.length;i++){
if(elements[i].checked){
policyno=document.getElementsByName("policyNo")[i].value;
}
}
document.forms("fm").action = "/claim/processRegist.do?actionType=getRelatedPartyInsured&policyNo="+policyno+"&isSelect=yes";
document.forms("fm").target = "RelatedPartyInsuredFrame";
document.forms("fm").submit();
}上面是jsp的代码,在平时都是正常的,但是在某个用户操作的时候,elements.length就会多一倍,如果正常状态是13,就会变成26,遍历的时候也会从13开始,只有一个用户是这样,其他人都没问题,有大佬知道该怎么办吗
IE7对getElementsByName的支持不好(貌似是ID和Name同时满足才返回)。
参考
https://stackoverflow.com/questions/278719/getelementsbyname-in-ie7
https://social.msdn.microsoft.com/Forums/ie/en-US/b3eb3e22-4e91-46be-9b4e-94533d2ec350/ie7-and-getelementsbyname?forum=iewebdevelopment解决方法:
按指定的tag用getAttribute("name")方法来判断。
例:function getElementsByName_iefix(tag, name) {
var elem = document.getElementsByTagName(tag);
var arr = new Array();
for(i = 0,iarr = 0; i < elem.length; i++) {
att = elem[i].getAttribute("name");
if(att == name) {
arr[iarr] = elem[i];
iarr++;
}
}
return arr;
}
代码贴上来看一下function getElementsByName_iefix(tag, name) {
var elem = document.getElementsByTagName(tag);
var arr = new Array();
for(i = 0,iarr = 0; i < elem.length; i++) {
att = elem[i].getAttribute("name");
if(att == name) {
arr[iarr] = elem[i];
iarr++;
}
}
return arr;
}
function getElementsByName_iefix(tag, name) {
var elem = document.getElementsByTagName(tag);
var arr = new Array();
for(i = 0,iarr = 0; i < elem.length; i++) {
att = elem[i].getAttribute("name");
if(att == name) {
arr[iarr] = elem[i];
iarr++;
}
}
return arr;
}//点击被保险人选择,刷新展示被保险人详细信息
function selectInsured(){
var elements=getElementsByName_iefix("input","checkboxSelect");
var policyno;
for(i=0;i<elements.length;i++){
if(elements[i].checked){
policyno=document.getElementsByName("policyNo")[i].value;
}
}
document.forms("fm").action = "/claim/processRegist.do?actionType=getRelatedPartyInsured&policyNo="+policyno+"&isSelect=yes";
document.forms("fm").target = "RelatedPartyInsuredFrame";
document.forms("fm").submit();
}<input type="checkbox" name="checkboxSelect" value="<%=index++%>" onclick="showInsured(this);"/>