在单击下一步按钮之前,在JavaScript代码中添加5秒的延迟

在单击下一步按钮之前,在JavaScript代码中添加5秒的延迟,javascript,dom,click,Javascript,Dom,Click,我正在执行这个JavaScript,它是一种自解释的(我认为)。在一个带有classbutton的页面上大约有100个按钮,我希望它们逐个单击。很好用 但我想在点击下一步按钮之前增加5秒的延迟 var mybtn = document.getElementsByClassName('.button'); for( var i=0; i<100; i++ ) { mybtn[i].click(); } var mybtn=document.getElementsByClassNam

我正在执行这个JavaScript,它是一种自解释的(我认为)。在一个带有class
button
的页面上大约有100个按钮,我希望它们逐个单击。很好用

但我想在点击下一步按钮之前增加5秒的延迟

var mybtn = document.getElementsByClassName('.button');
for( var i=0; i<100; i++ ) {
    mybtn[i].click();
}
var mybtn=document.getElementsByClassName('.button');

对于(var i=0;i您可以使用
setInterval
实现该功能

使用长度属性,而不是手动指定
100


另外,请避免使用
getElementsByClassName
它不是标准的。相反,大多数浏览器都支持
document.queryselectoral

var mybtn=document.querySelectorAll('.button');
var i=0;
var timer=setInterval(函数(){
如果(i
Hi1
Hi2
Hi3
Hi4
Hi5
您可以使用该函数每5秒调用一次单击函数

比如:

setTimeout(function(){ mybtn[i].click(); }, 5000);
像这样的

//var buttons = document.getElementsByClassName('.button'); // Not standard
var buttons = document.querySelectorAll('.button');

function clickButton(index) {
    mybtn[index].click();
    if(index < buttons.length) {
        setTimeout("clickButton(" + (index+1) + ");", 5000);
    }
}

setTimeout("clickButton(0);", 5000);

如果您不介意使用另一个库来解决此问题,那么我建议您使用Kristopher Michael Kowal的库。使用承诺,在需要履行承诺时迭代并解决承诺


有什么方法可以测试这一点吗?我的意思是,我们可以在代码执行单击时添加警报。这将立即设置所有按钮的超时。因此,所有按钮将在同一时间(5秒后)被触发。问题是每个按钮后都有一个延迟。您可以使用
setTimeout(…,5000*(I+1))
谢谢你提醒我。我很高兴it@Roberthue您可以尝试上面的示例并查看您的控制台。是的,它现在正在工作。我可以在控制台中看到一个接一个的单击和相应的日志条目。谢谢。有什么方法可以测试这一点吗?我的意思是,我们可以在代码执行单击时添加警报。只需在控制台中添加警报调用即可操作:)在setTimeout中使用
string
是一种不好的做法。相反,声明一个匿名回调函数
getElementsByClassName
也不是标准的。并不是所有的浏览器都能实现它。改用document.querySelectorAll,这是所有现代浏览器都支持的。在页面上似乎不起作用。我在代码中添加了
console.log('clicked')
,在执行时,它会给出随机数。没有其他控制台条目。@Roberthue:您的代码中一定有其他错误。为什么在您只调用
console.log('clicked')
时它要记录数字?是的,在执行时它会返回一个类似3438的数字,然后什么都没有。
// Query all buttons
var buttons = document.querySelectorAll('.button');

// Register Click Event Handlers
Array.prototype.forEach.call(buttons, registerButtonClickHandlers);


// Invoke button click
Array.prototype.reduce.call(
  buttons,
  reduceButtonPromises , 
  Q.when()
);

function registerButtonClickHandlers(button) {

  button.addEventListener('click', function() {
    // display time end
    console.timeEnd(button.innerHTML);
  });

}

function reduceButtonPromises(promise, button) {

  // register promise callback
  return promise.then(function() {

    // deferred object
    var deferred = Q.defer();

    setTimeout(function() {
      // set time start
      console.time(button.innerHTML);
      // click button
      button.click();
      // resolve the promsie to trigger the next promise
      deferred.resolve();
    }, 100);

    // promise
    return deferred.promise;

  });

}