如何获得此代码中的“点击”功能重复?

时间:2019-07-14 20:33:20

标签: javascript

此代码仅执行一次“点击”功能。我希望它重复单击功能,直到发生超时。

我想尝试使用setInterval而不是setTimeout,但是担心我会创建竞争条件。

myLastTime

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则您希望在一切完成后停止点击,即最后的其他部分。您可以尝试这样的事情:

var M = 12;     // january=1
var d = 29;     // 1st=1
var h = 11;     // 24h time
var m = 12;
var s = 0;

// How long after the target to stop clicking, in milliseconds.
var duration = 100000;

// How long prior to the start time to click, in milliseconds, to
// account for network latency.
var networkLatency = 150;

// HTML ID of the button to click.
var element = "btnbookdates";

// =====================================
// End configuration section
// =====================================

function getMillisecondsLeft() {
    var nowDate = new Date();
    var targetDate = new Date(y,M-1,d,h,m,s); 
    return targetDate - nowDate;
}
function click() {
    var button = document.getElementById('btnbookdates');
    if ( button ) {
        window.console.log('clicked at '+getMillisecondsLeft());
        button.click();
    } else {
        window.console.log('nothing to click at '+getMillisecondsLeft());
    }
}

var timer ={};
if (getMillisecondsLeft() > 0) {
    window.console.log('queueing at '+getMillisecondsLeft());
    timer = setInterval(click, getMillisecondsLeft() - networkLatency);
} else if (-getMillisecondsLeft() <= duration) {
    click();
} else {
    clearInterval(timer);
    window.console.log('all done at '+getMillisecondsLeft());
}