DOM子标记名

时间:2012-04-11 20:33:10

标签: javascript dom tagname

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

2 个答案:

答案 0 :(得分:2)

elemtree.nextSibling包含文字和评论节点,这些节点具有nodeName但没有tagName属性。

解决方案:

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

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

答案 1 :(得分:0)

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

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

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

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