Internet explorer JavaScript错误仅选择一个单选按钮,对于IE 7工作正常,但现在对于IE 9抛出错误
我有一个javascript函数,它是从datagrid调用的,关于只选择一个单选按钮,对于IE7工作正常,但是现在对于IE9抛出错误 Microsoft JScript运行时错误:对象不支持属性或方法“getElementsByTagName” 请建议 如何修复它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
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)的较旧版本,但我担心此解决方案似乎不起作用。