window.settimeout() メソッドには、パラメータを指定して関数を呼び出す 2 つの方法があります:
function init(){ var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random(); //alert(url); window.setTimeout(function(){ searchJDWater(url);},100); }
function init(){ var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random(); //alert(url); window.setTimeout(“searchJDWater(”+url+“)”, 100); }
注: パラメータを指定して setTimeout を使用する場合は、 setTimeout("function name("+parameter+")", milliseconds) 、ここでのパラメータは文字列の形式のみであり、オブジェクトを渡すことはできません
--------------------------------------
次のメソッドは次のとおりです。間違いです。ブラウザのステータス バーには、パラメータが無効であることが示されます:
function init(){ var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random(); //alert(url); window.setTimeout(searchJDWater(url), 100); }
-------------------------------- -- ----------------------------
settimeout() 関数拡張:
「パラメータ付きの setTimeout」をオンラインで検索してください。多くの友人がいますsetTimeout を使用してオブジェクトでメソッド ループを実装するには、さまざまな方法があります。例:
<script language="javascript"> var __sto = setTimeout; window.setTimeout = function(callback,timeout,param) { var args = Array.prototype.slice.call(arguments,2); var _cb = function() { callback.apply(null,args); } __sto(_cb,timeout); } //测试代码 function aaaa(a) { alert(a); } function aaaaa(a,b,c) { alert(a + b + c); } var a = new Object(); window.setTimeout(aaaa,1000,a); window.setTimeout(aaaaa,2000,a,6,7); </script>
この例では、setTimeout の使用法、setTimeout (コールバック関数、時間、パラメーター 1、...、パラメーター n)。
別の例:
<script type="text/javascript"> var _st = window.setTimeout; window.setTimeout = function(fRef, mDelay) { if(typeof fRef == 'function'){ var argu = Array.prototype.slice.call(arguments,2); var f = (function(){ fRef.apply(null, argu); }); return _st(f, mDelay); } return _st(fRef,mDelay); } function test(x){ alert(x); } window.setTimeout(test,1000,'fason'); </script>
この例では、window.setTimeout がリロードされ、apply を使用して前の関数をコールバックします。
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="testButton" type="button" onclick="test(1)">
マウスがこのボタンを押したときにtest()を呼び出し、「1」を渡すと、ダイアログボックスが1000ミリ秒(1秒)ごとに画面にポップアップし、1が表示されます、問題ありません。
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="btnTest" type="button" onclick="test(this)">
これは、document.getElementById("btnTest")と理解でき、マウスがこのボタンを押すと、オブジェクトが画面上に表示され、[object]に渡されます。 2 回目は 1000 ミリ秒後。ここで問題が発生します。ブラウザの左下隅にスクリプト エラーが報告され、詳細情報にはオブジェクトが定義されていないことが示されます。
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test()",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
test() にはパラメータがありません。最初は [object] が表示され、1000 ミリ秒後には変数に値が割り当てられていません。メソッドはパラメーターを使用してループしますが、パラメーターは破棄されます。
実際、これは実装が非常に簡単で、これを実現するためにそれほど長いコードを記述する必要はありません。
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test('"+ obj +"')",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
setTimeout の test のパラメーター obj の前後の引用符には、次のように二重引用符の内側に一対の一重引用符が含まれていることに注意してください: setTimeout("test(一重引用符 二重引用符 + obj +二重引用符一重引用符)")、わかりました~ 画面には 1000 ミリ秒ごとに [オブジェクト] が表示され、オブジェクトは正常に転送されます。
以上がJavaScript関数setTimeoutのパラメータ付き使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。