如何使Javascript计时器适用于变量参数

时间:2011-06-23 07:49:48

标签: javascript timer

Javascript计时器事件具有以下基本语法:

var t=setTimeout("javascript statement",milliseconds);

我有这个函数被调用onkeyup()作为一些文本框。我希望在一定时间后调用numeric_value_search()函数,在本例中为5秒。

关键是第5行。我有四种不同的写入方式,每种方式都会给出指定的错误:

    timer=setTimeout(numeric_value_search(boundBox),5000);

错误:无用的setTimeout调用(参数周围缺少引号?)

    timer=setTimeout("numeric_value_search(boundBox)",5000);

错误:未定义boundBox

    timer=setTimeout("numeric_value_search("+boundBox+")",5000);
元素列表

后的

错误:缺失]

    timer=setTimeout(numeric_value_search("+boundBox),5000);

错误:数据传递得很好,没有明确的错误,但计时器不起作用

var timer;
function chk_me(boundBox){
console.info(boundBox.id);
    clearTimeout(timer);
//  --- timer code here ---   e.g. timer=setTimeout("numeric_value_search("+boundBox+")",5000);
}

2 个答案:

答案 0 :(得分:3)

正如@kgiannakakis已经说过,

setTimeout(function() {
    numeric_value_search(boundBox);
}, 5000);

是要走的路。

原因很简单:当使用字符串参数时,就像使用通常是邪恶的eval()一样。传递函数时,不仅要避免将代码置于字符串中(这会破坏语法突出显示并可能需要转义符号),而且还可以使用闭包来访问当前上下文中的变量而不将它们嵌入到字符串中(可能如果没有正确完成,会导致代码注入。

答案 1 :(得分:2)

试试这个:

setTimeout(function() {
    numeric_value_search(boundBox);
}, 5000);