我基于另一个脚本,虽然我对javascript有些熟悉,但我还在学习。
// ==UserScript==
// @name click all "load more" prompts
// @namespace none
// @include http://www.reddit.com/*
// ==/UserScript==
setTimeout('var deleted = 0;var links = document.getElementsByTagName("a");var i = 0;var d = 0;for (i = 0; i < links.length; i++) {var l = links[i];if (l.href) {if (l.innerHTML == "load more comments") {toggle(l); d = 1; } } } , 4000);
现在,问题似乎是内部HTM都没有说“加载更多评论。”
相反,它说的是“加载更多评论(x回复)”,其中x可以是任何数字。
是否有一种简单的方法可以检查并查看innerHTML是否包含术语“加载更多注释”而不是检查确切的等效性?
以下是我所指的“加载更多评论”链接的页面:http://www.reddit.com/r/AskReddit/comments/g4c8a/whats_the_funniest_thing_you_have_heard_that_you/
编辑:
这是更新的脚本。似乎没有任何建议?
links = document.getElementsByTagName("a");
var i = 0;
for (i = 0; i < links.length; i++){
var l = links[i];
if (l.href){
if (l.innerHTML.indexOf("load more comments") > -1) {
toggle(l);
}
}
}
答案 0 :(得分:0)
因为这是JavaScript而innerHTML是一个字符串,所以你可以使用JS字符串方法。传统方式是indexOf
if(l.innerHTML.indexOf("load more comments") > -1){
// substring found
}
传统上,您可以使用正则表达式或其他方法。
我建议仔细阅读Mozilla的String documentation。
编辑:看起来很好。但是,我也建议你不要按照自己的方式做你正在做的事情。在不使用诸如jQuery之类的JS库的情况下在JavaScript中执行任何操作都是非常痛苦的,即使它很简单。setTimeout(function(){
$('a').each(function(i){
if(this.href && this.innerHTML.indexOf('load more comments') > -1){
toggle(this);
}
});
}, 4000);
学习jQuery,你以后会感谢自己。