求助!在document.getElementsByName不兼容的时候,该怎么办

Ίκαρος 2018-07-09 11:21:21
<%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开始,只有一个用户是这样,其他人都没问题,有大佬知道该怎么办吗
...全文
366 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2018-07-12
  • 打赏
  • 举报
回复
上面的代码看不出什么,把整个页面的最后生成的html代码贴上来。
stacksoverflow 2018-07-11
  • 打赏
  • 举报
回复
引用 5 楼 weixin_42345546 的回复:
[quote=引用 4 楼 stacksoverflow 的回复:]
问题原因:
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;
}

不行啊,长度还是翻倍的[/quote]
代码贴上来看一下
Ίκαρος 2018-07-11
  • 打赏
  • 举报
回复
引用 6 楼 stacksoverflow 的回复:
[quote=引用 5 楼 weixin_42345546 的回复:]
[quote=引用 4 楼 stacksoverflow 的回复:]
问题原因:
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;
}

不行啊,长度还是翻倍的[/quote]
代码贴上来看一下[/quote]

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);"/>
Ίκαρος 2018-07-10
  • 打赏
  • 举报
回复
引用 4 楼 stacksoverflow 的回复:
问题原因:
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;
}

不行啊,长度还是翻倍的
stacksoverflow 2018-07-09
  • 打赏
  • 举报
回复
问题原因:
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;
}
Ίκαρος 2018-07-09
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28029845 的回复:
你在每次刷新的时候清空上一次的内容,不然会就会返倍

怎么清空,而且用户第一次操作的时候就会有这个问题,我在本地只有把用F12 把IE的内核调成7的时候才会这样,其他的时候也是好的
枯心人 2018-07-09
  • 打赏
  • 举报
回复
你在每次刷新的时候清空上一次的内容,不然会就会返倍
Ίκαρος 2018-07-09
  • 打赏
  • 举报
回复
有没有大佬,帮帮忙

81,091

社区成员

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

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