我的For循环遇到问题,因为由于某种原因没有正确计时。我点击了我的外星人'每5秒钟(您将在代码中看到),并且每次您购买工人时它都会增加。因此,如果你有2个工人,那么每5秒就有2个外星人,3个外星人每5秒就有3个,依此类推。但是,当我有2个或更多工人时,它就像我想为每个工人点击外星人两次。
我想要的: 1工人=每5秒自动点击一次// 2名工人=每5秒自动点击两次 等
它不正当地做了什么: 1名工人按我的意愿行事// 2名工人=每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名工人,例如它会设置“外星人”。每5秒钟值为4,我只想要2,对于3我每5秒需要3个外星人,而不是9等等。
答案 0 :(得分:3)
您可能需要在重置之前清除时间间隔。
点击&#34;雇用工人&#34;两次,创建了两个计时器。这是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);
}
});
答案 1 :(得分:1)