javascript - 动态设置多个 setInterval(s) 并存储以供以后访问

标签 javascript variables setinterval

我有一个使用 setInterval 运行的函数,它从单击按钮的 ID 获取变量。有没有更好的方法可以做到这一点,而不必每次都为新变量编写所有开关 block ? 可以为变量动态调用 setInterval 吗?

我不知道如何表达这个问题,但是这样的事情是可能的吗? 使用包含项目的数组并为数组内的项目调用 setInterval?

像这样:

allitems.wood

然后调用 allitems[item] = setInterval( function() { gather(allitems[item]); }, time );

这就是我现在的做法,但每次我包含一个新项目时,我都必须重新编写所有案例部分......

switch(item){
  case "wood":
    getwood = setInterval( function() { gather(item); }, time );
    break;
  case "planks":
    makeplanks = setInterval( function() { gather(item); }, time );
    break;
  case "stone":
    getstone = setInterval( function() { gather(item); }, time );
    break;
  case "leather":
    getleather = setInterval( function() { gather(item); }, time );
    break;
  case "iron":
    getiron = setInterval( function() { gather(item); }, time );
    break;
}

最佳答案

您建议的解决方案非常正确。您可以使用括号表示法来访问对象属性,因此您可以使用变量来动态访问它们。

以下代码将收集木头 6 秒,停止后开始收集石头(纯粹是为了示例目的)。

var allItems = {
    wood: 0,
    planks: 0,
    stone: 0
};

var time = 2000;
   
function getItem(item) {
    allItems[item] = setInterval(function() {
        gather(item);
    }, time);
}

function gather(item) {
    console.log("gathering " + item);
}

getItem("wood");

setTimeout(function() {
    clearInterval(allItems.wood);
    getItem("stone");
}, 6000);

关于javascript - 动态设置多个 setInterval(s) 并存储以供以后访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175383/

相关文章:

javascript - 原型(prototype) + Scriptaculous : Migration Questions

当应用程序被滑动时,Android 在服务中维护变量值

PHP 在扩展类中使用父变量

javascript - setInterval淡入然后淡出纯javascript,没有jquery或css

javascript - JavaScript 中 window.setTimeout 或 window.setInterval 调用的函数列表?

jquery - 我如何在每次加载页面时执行 Jquery 的函数?

javascript - 单击时从 json 中选择

javascript - 如何将变量添加到 $.ajax({ url : ""});

javascript - 将数据从 HTML5 存储存储到应用程序数据库面临困难

PHP 帐户注册确认电子邮件代码未确认