1

我在对象值中有一个数字,我想在代码运行时动态更新它。例如,如果数字的值为 30,当我运行我的代码时,我希望能够将这个数字更新为 20,而无需我实际进入代码并亲自将其更新为 20。

如何编写更新此对象值的代码?我遇到的问题是计时器系统每 1 秒记录一次 30 的值,而不是减去一些数字后分配给它的新值。

var count = character.energy; // My Energy level is 30
var counter = setInterval(timer, 1000); 

function timer() { 
  count += characterstats.energyregen;
  if (count >= 30){
     clearInterval(counter);
  }
  document.getElementById("energy").innerHTML = count;
  character.energy = count;
}
4

2 回答 2

3

移动定时器内部计数变量的声明和初始化。

var counter = setInterval(timer, 1000); 

function timer() { 
  var count = character.energy; // My Energy level is 30
  count += characterstats.energyregen;
  if (count >= 30){
     clearInterval(counter);
  }
  document.getElementById("energy").innerHTML = count;
  character.energy = count;
}
于 2013-10-17T00:30:24.823 回答
0

另一种方法,但可能不是您正在寻找的,是使用本地存储和/或 cookie 来存储值。但是,根据变量信息的重要性或私密性对此进行判断。我已经这样做了,并在存储之前对其进行了加密。我已将值存储在 localStorage 中,然后在加载事件期间更新对象,以获取新值。getter/setter 类型函数是对象的一个​​属性,因此它会在每次运行脚本时递增您想要的任何内容。我通过将对象存储为在其上运行 JSON 的字符串来做到这一点。如果您需要根据定时主题对其进行更新,那么迈克的回答是一个很好的答案。如果您只使用计时器,因为您不确定其他方法,请尝试使用 localStorage 选项。在某些情况下对我有用。快乐编码!:)

参考在 HTML5 localStorage 中存储对象的好帖子:来自堆栈用户的https://stackoverflow.com/a/2010948/2762516 !

对不起!我误解了这个问题。我以为您想在每次代码运行时更新,而不是在代码运行时更新。我道歉:)

于 2013-10-17T00:56:09.710 回答