javascript - 我的 For 循环计时不正确,出了什么问题?

标签 javascript jquery html for-loop

我的 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);
    }
});

WORKING EXAMPLE

关于javascript - 我的 For 循环计时不正确,出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879601/

相关文章:

javascript - ES6 - 默认参数结合解构 : What does this pattern mean?

javascript - Internet Explorer 父窗口上的动态 CSS

jquery 仅切换第一个目标

javascript - 工具提示不起作用

javascript:跨越字符串中的最后两个单词

jquery - 使用 jQuery 使用 Select 显示/隐藏多个 DIV

javascript - History.replaceState() 在控制台中给出 404 错误

javascript - 使用包括空字符串的复杂正则表达式拆分数组

javascript - 生成并排序 Javascript 随机数

javascript - 需要帮助避免双垂直滚动条