Javascript 动态设置多个setInterval并存储以供以后访问

Javascript 动态设置多个setInterval并存储以供以后访问,javascript,variables,setinterval,Javascript,Variables,Setinterval,我有一个使用setInterval运行的函数,它从单击按钮的id获取变量。有一种更好的方法可以做到这一点,而不必每次为新变量写入所有开关块? 可以为变量动态调用setInterval吗 我不知道如何表达这个问题,但像这样的事情是可能的吗? 将数组与项一起使用,并为数组中的项调用setInterval 大概是这样的: 黄连木 然后调用allitems[item]=setInterval(函数(){gather(allitems[item]);},time) 我现在就是这样做的,但是每次我包括一个新

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

我不知道如何表达这个问题,但像这样的事情是可能的吗? 将数组与项一起使用,并为数组中的项调用setInterval

大概是这样的:

黄连木

然后调用allitems[item]=setInterval(函数(){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={
伍德:0,
木板:0,
斯通:0
};
var时间=2000;
函数getItem(item){
allItems[项目]=设置间隔(函数(){
收集(项目);
},时间);
}
函数集合(项){
控制台日志(“收集”+项);
}
获取项目(“木材”);
setTimeout(函数(){
clearInterval(allItems.wood);
获取项目(“石头”);

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

下面的代码将收集木材6秒钟,停止收集木材,然后开始收集石头(纯粹出于示例目的)

var allItems={
伍德:0,
木板:0,
斯通:0
};
var时间=2000;
函数getItem(item){
allItems[项目]=设置间隔(函数(){
收集(项目);
},时间);
}
函数集合(项){
控制台日志(“收集”+项);
}
获取项目(“木材”);
setTimeout(函数(){
clearInterval(allItems.wood);
获取项目(“石头”);

}, 6000);如果我正确理解您的问题,听起来您想使用对象

大概是这样的:

黄连木

然后调用allitems[item]=setInterval(函数(){ 收集(所有项目[项目];},时间)

您可以通过使用以下对象来实现这一点:

var allitems = {};
allitems[item] = setInterval( function() { gather(item); }, time );
因此,如果您的物品是“木材”,则您可以通过执行以下操作访问“木材”间隔:


allitems.wood
allitems[“wood”]

如果我正确理解你的问题,听起来你想使用对象

大概是这样的:

黄连木

然后调用allitems[item]=setInterval(函数(){ 收集(所有项目[项目];},时间)

您可以通过使用以下对象来实现这一点:

var allitems = {};
allitems[item] = setInterval( function() { gather(item); }, time );
因此,如果您的物品是“木材”,则您可以通过执行以下操作访问“木材”间隔:


allitems.wood
allitems[“wood”]

这是您需要的。
是间隔id,如果需要,可用于以后删除间隔

var区间={};
函数addItem()
{
var item=document.getElementById(“item”).value;
var time=document.getElementById(“time”).value;
interval[item]=setInterval(函数(){console.log(item)},时间);
控制台日志(间隔);
}


添加
这是您需要的。
是间隔id,如果需要,可用于以后删除间隔

var区间={};
函数addItem()
{
var item=document.getElementById(“item”).value;
var time=document.getElementById(“time”).value;
interval[item]=setInterval(函数(){console.log(item)},时间);
控制台日志(间隔);
}


添加
您需要对象您需要对象谢谢,完美的解决方案,我选择您的答案是因为这是第一个答案,但其他答案也适用。谢谢@Vignesh RajaThanks,完美的解决方案,我选择您的答案是因为这是第一个答案,但其他答案也适用。谢谢你@VigneshRaja@RogerHN不用担心:)@RogerHN不用担心:)很好的例子@Archer,谢谢你提供的解决方案。它与我正在做的非常相似(我正在研究设置间隔并创建一个增量游戏来了解更多)。没问题-很高兴能提供帮助。我想你是在制作一款吞噬人们生命的游戏,而他们却坐在那里等待资源被收集。我试图使这个例子适合这种情况。祝你学习顺利:)谢谢@Archer如果你好奇这里是我正在制作的测试游戏:很好的例子@Archer,谢谢你的解决方案,它与我正在做的非常相似(我正在研究设置间隔并创建一个增量游戏来了解更多)。没问题-很高兴能提供帮助。我想你是在制作一款吞噬人们生命的游戏,而他们却坐在那里等待资源被收集。我试图使这个例子适合这种情况。祝你学习顺利:)谢谢@Archer如果你好奇的话,这是我正在做的测试游戏: