日期:2014-05-17  浏览次数:20416 次

讨厌的IE版本兼容问题,IE9,Chome无法运行...真他大爷....
实现的效果,是CheckBox选中时获取他的值和显示文本前台代码如下:
代码可以再IE的兼容模式下运行,但是IE9和Chome不能运行。大家看看是哪里有问题,谢谢大家...

HTML code
<tr>
<td><span text="建材" value1="7" onclick ="checkProd(); "><input id="ctl00_ContentPlaceHolder1_cblParent_0" type="checkbox" name="ctl00$ContentPlaceHolder1$cblParent$0" /><label for="ctl00_ContentPlaceHolder1_cblParent_0">建材</label></span></td><td><span text="型钢" value1="14" onclick ="checkProd(); "><input id="ctl00_ContentPlaceHolder1_cblParent_1" type="checkbox" name="ctl00$ContentPlaceHolder1$cblParent$1" /><label for="ctl00_ContentPlaceHolder1_cblParent_1">型钢</label></span></td></tr>


------------------------------------------------------------------
Js代码如下:
 
JScript code
 <script type="text/javascript">
          function checkProd() {
              // 再IE9和Chome下不能运行
              var lblProdSelected = document.getElementById("<%=lblProdSelected.ClientID %>");
              var hidProdSelected = document.getElementById("<%=hidProdSelected.ClientID %>");
              var ckelems = document.getElementById("<%=cblParent.ClientID %>").getElementsByTagName("input");
              var spelems = document.getElementById("<%=cblParent.ClientID %>").getElementsByTagName("span");
              for (var i = 0; i < ckelems.length; i++) {
                  if (ckelems[i].type == "checkbox") {
                      var nm = spelems[i].text;
                      var id = spelems[i].value1;
                      var text = lblProdSelected.innerText;
                      var t = nm + "|" + id + ",";
                      if (ckelems[i].checked) {
                          if (text == "") {
                              lblProdSelected.innerText += t;
                              hidProdSelected.value += t;
                          }
                          else {
                              if (text.indexOf(t) == -1) {
                                  //不包含则加入
                                  lblProdSelected.innerText += t;
                                  hidProdSelected.value += t;
                              }
                          }
                      }
                      else {
                          lblProdSelected.innerText = lblProdSelected.innerText.replace(t, "");
                          hidProdSelected.value = hidProdSelected.value.replace(t, "");
                      }
                  }
              }
          }
    </script>


------解决方案--------------------
ckelems[i].checked 换成 ckelems[i].attr(“checked”) 试试
------解决方案--------------------
建议使用innerHTML试下,这个属性兼容的浏览器比较多。没IE9无法测试.....
------解决方案--------------------
调试一下,看看具体什么地方不兼容,建议用firefox测试,一般firefox测试通过,基本都没问题的了。
还有,建议你把你这个功能的详细需求说一下,和你的页面设计,也许会有大侠有其他的办法来实现。