2011-05-23 123 views
1

我一直在玩一個網站,我想繼續點擊一個按鈕i次,每次interval秒。Greasemonkey延遲... setTimeout無法正常工作

我的代碼是:

clickbidBtn1 = function() { 
    var bidBtn=document.getElementById("BidButton"); 

    var interval = 15000; 
    for (var i=3; i>=0; i--){ 
    setTimeout(bidBtn.click(1);,i*interval); 
}; 

我發現,通用汽車執行所有i的點擊次數的同時,不與預期的延遲。有沒有辦法延遲點擊的時間?假設我想要的功能是每15秒鐘點擊一次按鈕次數爲i

我在考慮給它多一些變量,並在settimeout代碼部分添加一個變量,它只執行@點擊,然後在下一個settimeout之前比較增加的變量和當前的變量......但是,沒有認真考慮過但...這似乎是一個複雜的過程,一個簡單的過程... :(我無線本地環路玩弄有點

回答

1

使用setInterval()

的一種方式。

var bidClickTimer  = 0; 
var numBidClicks  = 0; 

function clickbidBtn1() 
{ 
    var interval  = 15000; 
    bidClickTimer  = setInterval (function() {BidClick(); }, interval); 
} 

function BidClick() 
{ 
    numBidClicks++; 
    if (numBidClicks > 3) 
    { 
     clearInterval (bidClickTimer); 
     bidClickTimer = ""; 
    } 
    else 
    { 
     bidBtn.click (1); 
    } 
} 

clickbidBtn1(); 

另外,在不使用全局變量:

function clickbidBtn1() 
{ 
    var interval   = 15000; 
    this.numBidClicks  = 0; 
    this.bidClickTimer  = 0; 
    this.BidClick   = function() { 
           numBidClicks++; 
           if (numBidClicks > 3) 
           { 
            clearInterval (bidClickTimer); 
            bidClickTimer = ""; 
           } 
           else 
           { 
            bidBtn.click (1); 
           } 
          }; 
    this.bidClickTimer  = setInterval (function(thisScope) {thisScope.BidClick(); }, interval, this); 
} 

clickbidBtn1(); 
+0

@ brock。謝謝,但由於某種原因,我仍然得到相同的結果。所有3次點擊都在同一時間進行,沒有任何延遲,即使是第一次也沒有。 sory我的錯誤... :)將腳本保存爲錯誤的格式,並沒有安裝正確的腳本:P正在工作。 – Ludwig 2011-05-23 22:34:03

+0

@布魯克,關於這個問題的另一件小事......如果我需要它在點擊之前先倒數間隔或15秒,我該怎麼辦?目前它首先點擊然後在下一次點擊之前計數。 – Ludwig 2011-06-13 18:36:55

+0

@Ludwig,這個答案中的代碼*在第一次點擊之前等待15秒。如果您的代碼行爲不同,請在另一個問題中發佈,我們會看到有什麼不同。 – 2011-06-13 20:07:52

0

只是爲了解釋爲什麼您的代碼不起作用:您調用.click方法立即(把()函數名後調用函數)並且實際上將該函數的返回值傳遞給setTimeoutfor循環如此之快以至於一切似乎都在同一時間發生。

你必須通過函數參考setTimeout,例如,匿名功能:

setTimeout(function() { 
    bidBtn.click(1); 
}, i*interval); 
+0

好吧,很高興知道。在過去的2個小時裏,我嘗試了幾種不同的方式,但結果卻保持不變。但Broc的代碼有所幫助,因爲他在過去的一天或兩天裏都有很大的幫助。 – Ludwig 2011-05-23 22:40:30