在单击下一步按钮之前,在JavaScript代码中添加5秒的延迟
我正在执行这个JavaScript,它是一种自解释的(我认为)。在一个带有class在单击下一步按钮之前,在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
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;
});
}