gpt4 book ai didi

javascript - Microsoft JScript 运行时错误 : Object doesn't support property or method 'getElementsByTagName' in IE9

转载 作者:行者123 更新时间:2023-11-28 09:07:56 26 4
gpt4 key购买 nike

我有一个带有 TreeView 控件的页面,并且检查了父节点,也将检查子节点。它是使用 javascript 完成的。但是当页面打开是IE9并尝试检查父节点时,我会得到一个错误:

Microsoft JScript 运行时错误:对象不支持属性或方法“getElementsByTagName”

function AreAllSiblingsChecked(chkBox)
{
var parentDiv = GetParentByTagName("div", chkBox);
var childCount = parentDiv.childNodes.length;
for(var i=0;i<childCount;i++)
{
var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
//if any of sibling nodes are not checked, return false
if(prevChkBox.checked)
{
return true;
}
}
return false;
}

//utility function to get the container of an element by tagname
function GetParentByTagName(parentTagName, childElementObj)
{
var parent = childElementObj.parentNode;
while(parent.tagName.toLowerCase() != parentTagName.toLowerCase())
{
parent = parent.parentNode;
}
return parent;
}

如果有人能帮我解决这个问题,谢谢!提前致谢...

最佳答案

在 IE9 中,childNodes[] 返回文本节点(注释或空格)以及子标签。文本节点不支持 getElementsByTagName()。对底层 DOM 模型有很好的总结 here .

最简单的修复方法就是在使用该方法之前检查该方法是否存在:

function AreAllSiblingsChecked(chkBox)
{
var parentDiv = GetParentByTagName("div", chkBox);
var childCount = parentDiv.childNodes.length;
for(var i=0;i<childCount;i++)
{
if (parentDiv.childNodes[i].getElementsByTagName) {
var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
//if any of sibling nodes are not checked, return false
if(prevChkBox.checked)
{
return true;
}
}
}
return false;
}

关于javascript - Microsoft JScript 运行时错误 : Object doesn't support property or method 'getElementsByTagName' in IE9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16685591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com