setInterval调用函数的问题

时间:2011-06-14 17:20:22

标签: javascript jquery

我正在尝试使用一个简单的脚本,但在某个地方我必须做错了,因为它不起作用!我只想设置调用函数的间隔时间。提供一些帮助。也许不是最好的解决方案,但我是新手。

$(document).ready(function() {

startInterval(); // activate timer

function startInterval() {
var t = setInterval("autoSave", 20000);
}

function autoSave() {
alert("test");
}

});

3 个答案:

答案 0 :(得分:6)

其中任何一个都可以,但不是你拥有的

// Pass the real function
function startInterval() {
  var t = setInterval(autoSave, 20000);
}

// THIS MAY NOT WORK
// eval
function startInterval() {
  var t = setInterval("autoSave()", 20000);
}
//

// Anonymous function
function startInterval() {
  var t = setInterval(function() { autoSave(); }, 20000);
}

这是推理:如果你直接传递一个函数,它会调用它。但是,如果你传递一个字符串,它会在超时结束时eval - 在你的情况下返回一个函数,在我的第二种情况下返回评估函数(注意括号)

答案 1 :(得分:4)

删除“”,并将其作为对该功能的引用。

function startInterval() {
  var t = setInterval(autoSave, 20000);
  //                  ^now you have a reference to
  //                   autoSave and setInterval knows
  //                   what to execute
}

答案 2 :(得分:0)

1)更好的做法是使t - global,否则它将无法在startInterval()函数之外访问。但你需要它来清除间隔

即。声明var t;在function startInterval();之前

2)考虑:t = setInterval('autoSave()', 20000);