Die Methode window.settimeout() bietet zwei Möglichkeiten, eine Funktion mit Parametern aufzurufen:
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); }
Hinweis: Wenn Sie setTimeout mit einer Parametermethode verwenden, setTimeout( „Funktionsname („+Parameter+“)“, Millisekunden), die Parameter können hier nur in String-Form vorliegen und kein Objekt übergeben
--------------- --- ---------
Die folgende Methode ist falsch und die Statusleiste des Browsers zeigt an, dass die Parameter ungültig sind:
function init(){ var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random(); //alert(url); window.setTimeout(searchJDWater(url), 100); }
--------- - ------------------------------------------------- - --
settimeout() Funktionserweiterung:
Suchen Sie online nach „setTimeout mit Parametern“ Viele Freunde haben viele Methoden geschrieben, um Methodenschleifen mithilfe von setTimeout mit Objekten zu implementieren, zum Beispiel:
<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>
In diesem Beispiel wird setTimeout verwendet, setTimeout (Rückruffunktion, Zeit, Parameter 1,..., Parameter n).
Ein weiteres Beispiel:
<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>
In diesem Beispiel wird window.setTimeout überladen und apply wird verwendet, um die vorherige Funktion zurückzurufen.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="testButton" type="button" onclick="test(1)">
Wenn die Maus diese Taste drückt, wird test() aufgerufen, übergibt „1“ und alle 1000 Millisekunden erscheint ein Dialogfeld auf dem Bildschirm (1 2.) Das Feld zeigt 1, kein Problem.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="btnTest" type="button" onclick="test(this)">
Dies kann hier als document.getElementById("btnTest") verstanden werden. Wenn die Maus diese Taste drückt, wird ein Objekt an die Testfunktion übergeben Der Bildschirm zeigt [Objekt] an und zeigt es nach 1000 Millisekunden kein zweites Mal an. Hier kommt das Problem. In der unteren linken Ecke des Browsers wird ein Skriptfehler gemeldet, und die detaillierten Informationen zeigen, dass das Objekt nicht definiert ist.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test()",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
Der test() in setTimeout hat zum ersten Mal [Objekt] und ist nach 1000 Millisekunden undefiniert. Die Variable wurde nicht zugewiesen Wert, was bedeutet, dass mit dieser Methode Methodenschleifen mit Parametern implementiert werden können, die Parameter jedoch zerstört werden.
Tatsächlich ist dies sehr einfach zu implementieren und es ist nicht erforderlich, einen so langen Code zu schreiben, um dies zu erreichen.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test('"+ obj +"')",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
Beachten Sie, dass die Anführungszeichen vor und nach dem Parameter obj in test in setTimeout ein Paar einfache Anführungszeichen innerhalb der doppelten Anführungszeichen haben, etwa so: setTimeout ("test(einfaches Anführungszeichen, doppelte Anführungszeichen + obj + doppelte Anführungszeichen, einfache Anführungszeichen)"), OK~ Der Bildschirm zeigt alle 1000 Millisekunden [Objekt] an und das Objekt wurde erfolgreich übertragen.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Anwendungsbeispiele der Javascript-Funktion setTimeout mit Parametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!