【发布时间】:2014-12-03 04:05:50
【问题描述】:
是否可以在 Javascript 中的 setTimeout() 方法中使“值”自增?
我的代码如下所示。我在 init() 方法中有两个 for 循环,在内部循环中我有 setTimeout 方法来使函数“var myfun = function testFunc(year, value)”每 1 秒被调用一次。
但我仍然有一个名为“值”的属性
1.我希望“价值”每次都增加,
2.或者修改“value”,下次调用该函数“var myfun = function testFunc(year, value)”时使用新的“value”;
但是现在我发现在函数“var myfun = function testFunc(year, value)”中我可以从dataset[state]中正确得到年份,但是“value”总是一样的。
有什么办法可以让“价值”每次都增加或改变? 非常感谢您提供任何帮助或答案。
...
init();
function init(){
...
for (var state in dataset) {
var i=0;
var value = 18;
for (var year in dataset[state]) {
i++;
setTimeout( "myfun(" + year + "," + value + ")", i*1000);
}
}
}
var myfun = function testFunc(year, value){
// I want "value" to be increased every time,
// or make change to "value", then use the new "value"
// in the next time invoke this function;
value++;
console.log("year:" + year + ",value:"+value);
}
【问题讨论】:
-
主要问题在于你在“myfun”中增加了值,而不是在“init”中增加了它。您总是传递相同的值并将其递增 1。
-
从不将字符串传递给
setTimeout。传递一个函数! -
由于我想在myfun中获取“年份”值,并且我想对值进行一些更改(不仅增加1,还可能还有一些其他操作)。我现在很困惑。 JS中有什么方法可以实现吗?
标签: javascript closures settimeout