getElementsByTagName仅限特定链接

时间:2012-04-13 01:02:26

标签: javascript getelementsbytagname

我正在尝试在我的网站上使用Anarchy Media Player,但由于我的媒体文件/网址不是标准格式,因此不得不更改代码。它现在拉取视频文件,但javascript正在查找所有链接并尝试添加播放器。我甚至将id“视频”添加到视频链接中,但仍然可以找到页面上的所有链接并添加播放器。 如何将这些链接分开才能将玩家添加到他们中?

以下是查找链接的javascript部分:

var all = document.getElementsByTagName('a');
for (var i = 0, o; o = all[i]; i++) {
    if(o.idName="video" && o.className!="amplink") {
        // Add player code...
    }
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

不确定为什么你不只是这样做:

var all = document.getElementsByTagName('a');
for (var i = 0, len = all.length; i<len; i++) {
    if(all[i].idName=="video" && all[i].className!="amplink") {
        // Add player code...
    }
}

这对你有用。请注意,我存储了数组长度的值,因此您不必每次迭代都要查找它。最小,但确实提高了性能略微

当您在if语句中执行idName时,您还将idName="video"设置为视频,而不是比较(这将始终返回true,这是您的问题)。使用双等于运算符(==)或三等于运算符(===)来比较值。

答案 1 :(得分:0)

您确定不是if (o.className == "amplink")吗?

除了你所拥有的一切都很好(总是返回true的o.idName="video"位除外):http://jsfiddle.net/VpMVe/

答案 2 :(得分:0)

你可以使用querySelectorAll获取元素,但它是not supported in older browsers(比IE8,FF3.5,Opera 10,Chrome 4和Safari 3.1更旧)。它类似于使用CSS选择器(和jQuery)定位元素。这里a demo将所有与班级video的链接变为红色。

function get(selector) {
    return document.querySelectorAll(selector)
}

(function() {
    //get all <a> with class "video"
    var video = get('a.video');

    //for each, turn them red
    for (var i = 0; i < video.length; i++) {
        video[i].style.color = 'red';

        //in your case, do whatever you want for each target here

    }
}())​

答案 3 :(得分:0)

没有idName属性。它只是o.id。并且只能有一个id,因此可能会导致一些问题。你也要分配它,而不是比较总是评估为真的相等性。如果您有多个课程,例如class="amplink someOtherClass"!= amplink将评估为true。最好在className上进行匹配。像这样:&& !o.className.match(/ampLink/)

在另一个类上制作视频,然后进行匹配。