<%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开始,只有一个用户是这样,其他人都没问题,有大佬知道该怎么办吗

解决方案 »

  1.   

    怎么清空,而且用户第一次操作的时候就会有这个问题,我在本地只有把用F12 把IE的内核调成7的时候才会这样,其他的时候也是好的
      

  2.   

    问题原因:
    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;
    }
      

  3.   

    不行啊,长度还是翻倍的
    代码贴上来看一下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);"/>
      

  4.   

    上面的代码看不出什么,把整个页面的最后生成的html代码贴上来。