无法使用getElementsByTagName选择子元素

时间:2014-05-31 14:10:03

标签: javascript

以下是HTML代码:

<span class="holder">
    <a href="/menu/page1">Navigate</a>
</span>

我想用类持有者选择所有这些标签,然后在这些持有者下我想要更改a标签的href。

我尝试过:

var holders = document.getElementsByClassName('holder'),
    i = holders.length;

while(i--) {
    holders[i].getElementsByTagName('a').href = "http://www.google.com";

    }

但上面的代码不起作用。它不会将href从/menu/page1更改为我的自定义链接。我做错了什么?

当我使用某些外部网页时,我无法使用jquery。 请只提供Javascript解决方案。 谢谢。

2 个答案:

答案 0 :(得分:4)

getElementsByTagName返回元素集合,如果要获取第一个链接,请使用.getElementsByTagName('a')[0]

答案 1 :(得分:1)

由于perent元素可能包含同一标记的多个实例,因此getElementsByTagName返回元素/节点的集合

所以,你必须像数组一样处理它。贝娄是最好的方法之一

var holders = document.getElementsByClassName('holder'),
    i = holders.length;

while(i--) {
    var anchors = holders[i].getElementsByTagName('a');
    for (var j = 0; j < anchors.length; j++) { 
        anchors[j].href="'http://www.google.com";
    }

}

Demo Fiddle