我正在尝试使用javascript遍历成人节点的子节点并根据需要更改属性。代码挂在elemtree.tagName上,说明该对象没有该属性。我已经阅读了DOM属性,并且tagName被声明为DOM的属性。为什么不会被识别?
下面的代码:
elemtree = elem.firstChild;
while (elemtree != null) {
if (elemtree.tagName.toLowerCase() == "img") {
elemtree.src = img;
}
else {
elemtree.display = display;
}
elemtree = elemtree.nextSibling;
}
最佳答案
elemtree.nextSibling
包括文本节点和注释节点,它们具有nodeName
但没有tagName
属性。
解决方案:
改用elem.firstElementChild
和elemtree.nextElementSibling
(可能的浏览器兼容性问题)。
使用nodeName
代替tagName
。
在使用之前检查tagName
是否存在:
if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img") {