2011-06-22 29 views
0

我基於另一個腳本,儘管我對JavaScript有點熟悉,但我仍然在學習。寫我的第一個油脂猴子腳本。如何讓innerHTML使用'contains'?

// ==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); 

現在,問題似乎是,沒有一個innerHTM只是說「加載更多評論」。

相反,它表示類似於「加載更多評論(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

由於這是JavaScript和innerHTML是一個字符串,你可以使用JS字符串方法。傳統的方式是indexOf

if(l.innerHTML.indexOf("load more comments") > -1){ 
    // substring found 
} 

少傳統,您可以使用正則表達式或其他方法。

我建議您仔細閱讀Mozilla的String documentation

編輯:看起來不錯。不過,我也建議你不要按照自己的方式去做。不使用JS庫(如jQuery),在JavaScript中做任何事情都是非常痛苦的,即使它很簡單。

setTimeout(function(){ 
    $('a').each(function(i){ 
     if(this.href && this.innerHTML.indexOf('load more comments') > -1){ 
      toggle(this); 
     } 
    }); 
}, 4000); 

學習jQuery,稍後你會感謝你自己。

+0

謝謝,這非常有幫助。 – some1

+0

我使用更新的代碼編輯了原始問題 - 這看起來如何? – some1

相關問題