我一直在玩一个网站,我想在i
秒内每隔interval
次点击一次按钮。
我的代码是:
clickbidBtn1 = function() {
var bidBtn=document.getElementById("BidButton");
var interval = 15000;
for (var i=3; i>=0; i--){
setTimeout(bidBtn.click(1);,i*interval);
};
我发现GM会同时执行所有i
次点击,而非预期的延迟。有没有办法延迟点击时间?假设我希望该功能每15秒点击一次按钮i
次。
我想给它一些更多的变量,并在settimeout
代码部分添加一个变量,它只执行@ click,然后将增加的变量与当前变量进行比较,然后再转到下一个{{1} ......但是还没有考虑过......对于一个简单的过程来说似乎是一个复杂的过程...... :(我会玩弄它一点
答案 0 :(得分: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 ();
答案 1 :(得分:0)
只是为了解释为什么您的代码不起作用:您调用 .click
方法立即(在函数名称调用后放置()
函数)并实际将该函数的返回值传递给setTimeout
。 for
循环非常快,以至于一切似乎都在同一时间发生。
您必须将功能参考传递给setTimeout
,例如一个匿名函数:
setTimeout(function() {
bidBtn.click(1);
}, i*interval);