getElementsByTagName 仅限特定链接

getElementsByTagName specific links only

本文关键字:链接 getElementsByTagName      更新时间:2023-09-26

我正在尝试在我的网站上使用Anarchy Media Player,但由于我的媒体文件/URL不是标准格式,因此不得不更改代码。它现在拉取视频文件,但javascript正在查找所有链接并尝试向其添加播放器。我什至在视频链接中添加了id"video",但仍然在页面上找到所有链接并向其添加播放器。如何分离这些链接以仅将玩家添加到其中?

以下是查找链接的 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...
    }
}

谢谢你的帮助。

不知道为什么你不只是这样做:

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="video"时,您还将idName设置为视频,而不是比较(这将始终返回 true,这是您的问题)。使用双等号运算符 (==) 或三等号运算符 (===) 来比较值。

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

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

您可以使用

querySelectorAll获取元素,但在较旧的浏览器中不受支持(这将比IE8,FF3.5,Opera 10,Chrome 4和Safari 3.1更早)。它类似于使用CSS选择器(和jQuery)定位元素。这是一个演示,让与类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
    }
}())​

没有 idName 属性。这只是o.id.而且只能有一个 id,因此可能会导致一些问题。此外,您正在分配它,而不是比较总是计算为 true 的相等性。如果您有多个类,例如 class="amplink someOtherClass" != amplink 的计算结果为 true。最好对类名进行匹配。像这样:&& !o.className.match(/ampLink/)

在另一个班级上制作视频并改为进行匹配。