Internet explorer JavaScript错误仅选择一个单选按钮,对于IE 7工作正常,但现在对于IE 9抛出错误

Internet explorer JavaScript错误仅选择一个单选按钮,对于IE 7工作正常,但现在对于IE 9抛出错误,internet-explorer,Internet Explorer,我有一个javascript函数,它是从datagrid调用的,关于只选择一个单选按钮,对于IE7工作正常,但是现在对于IE9抛出错误 Microsoft JScript运行时错误:对象不支持属性或方法“getElementsByTagName” 请建议 如何修复它 function SelectSingleRadioButton(gridViewId) { var grid = document.getElementById(gridViewId); var RadioButton

我有一个javascript函数,它是从datagrid调用的,关于只选择一个单选按钮,对于IE7工作正常,但是现在对于IE9抛出错误 Microsoft JScript运行时错误:对象不支持属性或方法“getElementsByTagName” 请建议 如何修复它

function SelectSingleRadioButton(gridViewId) {
   var grid = document.getElementById(gridViewId);
   var RadioButtonObj = window.event.srcElement;
   for (i = 0; i < grid.rows.length; i++) {
      var tr = grid.rows[i];
      var td = tr.childNodes[0];
      var items = tr.childNodes[0].getElementsByTagName("input") // the point where error is occuring
      for (j = 0; j < items.length; j++) {
         if (items[j].type == "radio") {
            if (RadioButtonObj.id == items[j].id) {
                items[j].checked = true;
            }
            else {
                items[j].checked = false;
            }
         }
      }
   }
}
功能选择SingleRadioButton(gridViewId){
var grid=document.getElementById(gridViewId);
var RadioButtonObj=window.event.src元素;
对于(i=0;i
最近对clone()方法进行的优化引入了此错误

由于变量
elem
clone
都可能是文档碎片,因此对它们调用getElementsByTagName是不安全的。因为根据规范文档,Fragements没有实现这个方法。旧的IE版本之所以没有遇到这个问题,是因为它们也在DocumentFragment上实现了这个方法,尽管它们不应该这样做。IE9似乎已经修复了这个问题(变得更符合规范),并且删除了这个方法,现在在点击这个分支时中断

一个可能的修复方法是检查
elem/clone是否为nodeType==11
,然后检查
elem/clone.getElementsByTagName是否可用,如果是,请使用它。如果没有,请使用
elem/clone.querySelectorAll(“*”)
。这应该没问题,因为旧的IE版本有
getElementsByTagName
,而新版本有
querySelectorAll


因此,您可以将
getElementsByTagName
用于IE(IET)的较旧版本,但我担心此解决方案似乎不起作用。