我知道我一定是在做一些愚蠢的事情,但请快速抬头帮助我。
我使用了几种方法将节点列表转换为数组。我不会尝试所有不同的尝试。是的我可以读出新数组,但是试图查看其中一个数组项是否包含特定的字符串模式失败。
一个例子:
function getthelinks() {
var nl = document.querySelectorAll('a');
var arr = Array.prototype.slice.call(nl);
for (var i = 0; i < arr.length; i++) {
var n=arr[i].indexOf(".mov"); // <------- it's this that fails!
}
}
因此,我们的想法是测试页面中的链接,以获得以&#39; a href&#39;结尾的电影链接。以.mov格式调用电影网址。
这样我就可以将页面阅读器发送到新页面,格式为html5,以便观看视频而不是下载。
那我为什么要TypeError: nl[i].indexOf is not a function
?
我只是希望找到一种快速的方法来列出直接转到我页面中的电影文件的链接调用,而无需直接编辑页面。
非常感谢能够向我展示我正在做的愚蠢错误的任何人。
删除了代码行失败的页面位于:http://www.microscopy-uk.org.uk/AAA-test-intercept.html
答案 0 :(得分:2)
发生错误是因为您尝试在HTML节点上使用indexOf
字符串方法。您必须先访问节点的href
属性:var n = arr[i].href.indexOf(".mov");
。
此外,如果您只是想知道网址是否以 .mov 结尾,您可以使用如下测试:
if (arr[i].href.endsWith(".mov")) {
// Do some magic.
}
答案 1 :(得分:1)
这是对Andrew的答案的支持,它完全解决了你的案件。
另外,你可以通过遵循这种简洁的方法找到href attributr值的锚元素,这些元素以 .mov 结尾:
var movLinks = document.querySelectorAll("[href$=\".mov\"]");
这样你就不需要循环和过滤了。