0

我正在尝试使用 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;
    }
4

2 回答 2

2

elemtree.nextSibling包括文本节点和注释节点,它们具有nodeName但没有tagName属性。

解决方案:

  1. 使用elem.firstElementChildandelemtree.nextElementSibling代替(可能的浏览器兼容性问题)。
  2. 使用nodeName而不是tagName.
  3. 检查是否存在tagName先前使用它:

    if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img") {
    
于 2012-04-11T20:36:58.357 回答
0

我同意 Rob W 的观点,最好的解决方案是避免没有属性的节点开始,但是您也可以考虑更改:

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

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

这样,如果该属性不存在,它就不会抛出错误。

于 2012-04-11T20:43:25.590 回答