JavaScript関数setTimeoutのパラメータ付き使用例を詳しく解説

伊谢尔伦
リリース: 2017-07-26 17:20:14
オリジナル
1786 人が閲覧しました

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 == &#39;function&#39;){ 
  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,&#39;fason&#39;); 
  </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(&#39;"+ obj +"&#39;)",1000); 
  } 
  </script> 
  <input id="testButton" type="button" onclick="test(this)">
ログイン後にコピー

setTimeout の test のパラメーター obj の前後の引用符には、次のように二重引用符の内側に一対の一重引用符が含まれていることに注意してください: setTimeout("test(一重引用符 二重引用符 + obj +二重引用符一重引用符)")、わかりました~ 画面には 1000 ミリ秒ごとに [オブジェクト] が表示され、オブジェクトは正常に転送されます。


以上がJavaScript関数setTimeoutのパラメータ付き使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート