写我的第一个Grease Monkey Script。如何让innerHTML使用'contains'?

时间:2011-06-22 11:43:40

标签: javascript greasemonkey reddit

我基于另一个脚本,虽然我对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);
        }
    }
}

1 个答案:

答案 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,你以后会感谢自己。