2011-06-23 2 views
0

Javascriptのタイマーイベントは、この基本的な構文を持っているためにJavascriptのタイマーを動作させるために:は、どのように変数パラメータ

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

私はいくつかのテキストボックスの()onkeyupの呼び出されるこの機能を持っています。 numeric_value_search()関数を一定時間(この例では5秒)後に呼び出すようにします。

キー行は5行目です。

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

ERROR:役に立たないのsetTimeout呼び出し(引数の前後に引用符が不足して?)

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

ERROR:boundBoxではない私は、指定されたエラーを与えるそれぞれのそれが書き込まれることがあります4つの異なる方法を、持っています

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

ERRORに定義:]不足している要素のリストの後

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

ERROR:データがうまく渡され、明示的なエラーはありませんが、タイマーが

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

はこれを試してみてください動作しません:、

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

+1これは、正しく正確なsetTimeoutを使用する唯一の方法です。 – ThiefMaster

+0

ありがとう:) 。 。 。 – Ankur

3

すでに@kgiannakakis述べたよう

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

は行く方法です。

理由は簡単です。文字列引数を使用する場合は、通常は悪いeval()のようなものです。しかし、関数を渡すときには、文字列の中にコードを置くことを避けるだけではなく、文字列に埋め込むことなく現在のコンテキストの変数にアクセスするためにクロージャを使用する可能性もあります。コードが正常に実行されなかった場合はコードが挿入されます)。

+0

説明をありがとう – Ankur

関連する問題