我的 For 循环遇到问题,因为由于某种原因它的时间不正确。我让它每 5 秒点击一次我的“外星人”(你将在代码中看到),并且每次购买 worker 时它都会增加。因此,如果你有 2 个 worker ,则每 5 秒 2 个外星人,3 个外星人则每 5 秒 3 个,依此类推。但是,当我有 2 个或更多工作人员时,就像我想为每个工作人员单击外星人两次一样。
我想要什么: 1个worker = 每5秒自动点击一次// 2 个 worker = 每 5 秒自动点击两次 等等
它错误地做了什么: 1 个 worker 按照我想要的方式工作// 2个 worker =每5秒自动点击两次,每次点击值2 等等
这是运行 for 循环的变量:
var workerCheck = setInterval(function(){
var workers = parseInt($("#Workers").text());
if( workers > 0 ){
for(var i = 0; i < workers; i++){
$("#Alien").click();
}
}
},5000);
这是我的整个代码的pastebin链接:http://pastebin.com/ApwQgG4w
希望我的问题有意义,例如,如果我有 2 个 worker ,它将每 5 秒将“外星人”值设置为 4,而我只需要 2 个,对于 3,我希望每 5 秒有 3 个外星人,而不是 9 等。
最佳答案
您可能需要在重置之前清除间隔。
当您单击“雇用 worker ”两次时,会创建两个计时器。这是 demonstration 。无论单击该按钮多少次,您只需要一个计时器。
当您调用setTimer()
时,它会返回一个唯一的整数,您稍后可以使用该整数来引用该计时器。由于您总是设置(覆盖)相同的变量 workerCheck
作为计时器的唯一整数,因此 workerCheck
变量只能引用最新的计时器。这是 demonstration .
我建议您每次重置计时器时都清除它:
$(function () {
$('#Purchase').click(function () {
automaticCounter();
});
// set variable with broader scope
var workerCheck;
function automaticCounter() {
var workers = parseInt($("#Workers").text());
workers = isNaN(workers) ? 0 : ++workers;
$("#Workers").text(workers);
var autoCounter = parseInt($("#Aliens").text());
autoCounter = isNaN(autoCounter) ? 0 : autoCounter - 10 * workers;
$("#Aliens").text(autoCounter);
// clear the timer
clearInterval(workerCheck);
// set the timer
workerCheck = setInterval(function () {
var workers = parseInt($("#Workers").text());
if (workers > 0) {
for (var i = 0; i < workers; i++) {
$("#Alien").click();
}
}
}, 5000);
}
});
关于javascript - 我的 For 循环计时不正确,出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879601/