我正在尝试使用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.firstElementChildelemtree.nextElementSibling(可能的浏览器兼容性问题)。
使用nodeName代替tagName
在使用之前检查tagName是否存在:

if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img") {

09-25 19:27