如何使Javascript定时器为变量参数工作
How to make Javascript timer work for variable parameter
Javascript计时器事件具有以下基本语法:
var t=setTimeout("javascript statement",milliseconds);
我有一个函数,它被调用为一些文本框的onkeyup()。我希望在一定时间后调用numeric_value_search()
函数,在本例中为5秒。
关键的一行是第五行。我有四种不同的写法,每种写法都会给出指定的错误:
timer=setTimeout(numeric_value_search(boundBox),5000);
错误:无用的setTimeout调用(参数周围缺少引号?)
timer=setTimeout("numeric_value_search(boundBox)",5000);
错误:未定义边界框
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);
}
正如@kgiannakakis已经说过的,
setTimeout(function() {
numeric_value_search(boundBox);
}, 5000);
是要走的路。
原因很简单:当使用字符串参数时,它就像使用eval()
,这通常是邪恶的。然而,在传递函数时,您不仅可以避免将代码放在字符串中(这会破坏语法高亮显示,可能需要转义狂欢),还可以使用闭包访问当前上下文中的变量,而不将它们嵌入字符串中(如果操作不当,可能会导致代码注入)。
试试这个:
setTimeout(function() {
numeric_value_search(boundBox);
}, 5000);
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 参数变量出现ngTable指令问题
- 我不能使用变量作为javascript参数
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- toString似乎导致setTimeout不总是为toString的变量参数执行函数
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- 使用变量参数创建新的 JavaScript 对象
- 将变量参数传递给函数 - JavaScript
- 在onClick函数中传递c#变量参数
- 将变量参数传递给函数
- 使用变量参数直接调用Addthis Toolbox
- 从shell向spidermonkey javascript传递变量参数
- 使用变量/参数作为数组标识符
- 在javascript中如何在不使用参数的情况下传递变量参数
- 动态添加事件侦听器.函数触发,但我如何发送一个变量参数
- 传递字符串变量参数node.js不表达
- 调用带有变量参数的函数指针
- 如何使Javascript定时器为变量参数工作
- JavaScript:一个特殊的变量/参数
- 如何使用jquery将变量参数传递给匿名函数