La méthode window.settimeout() a deux manières d'appeler une fonction avec des paramètres :
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); }
Remarque : lors de l'utilisation de setTimeout avec une méthode de paramètre, setTimeout( "Nom de la fonction ("+paramètre+")", millisecondes), les paramètres ici ne peuvent être que sous forme de chaîne et ne peuvent pas transmettre d'objet
--------------- --- ---------
La méthode suivante est erronée et la barre d'état du navigateur indiquera que les paramètres ne sont pas valides :
function init(){ var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random(); //alert(url); window.setTimeout(searchJDWater(url), 100); }
--------- - ------------------------------------------------- - --
extension de fonction settimeout() :
Recherchez "setTimeout avec paramètres" en ligne De nombreux amis ont écrit de nombreuses méthodes pour implémenter des boucles de méthodes en utilisant setTimeout avec des objets, par exemple : .
<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>
Dans cet exemple, utilisation de setTimeout, setTimeout (fonction de rappel, heure, paramètre 1,..., paramètre n).
Autre exemple :
<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>
Dans cet exemple, window.setTimeout est surchargé et apply est utilisé pour rappeler la fonction précédente.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="testButton" type="button" onclick="test(1)">
Lorsque la souris appuie sur ce bouton, test() est appelé, en passant "1", et une boîte de dialogue apparaît à l'écran toutes les 1000 millisecondes (1 seconde) La case affiche 1, pas de problème.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test("+ obj +")",1000); } </script> <input id="btnTest" type="button" onclick="test(this)">
Cela peut ici être compris comme document.getElementById("btnTest") Lorsque la souris appuie sur ce bouton, un objet est transmis à la fonction de test. l'écran affiche [objet] et ne l'affiche pas une seconde fois après 1 000 millisecondes. Voici le problème. Une erreur de script est signalée dans le coin inférieur gauche du navigateur et les informations détaillées montrent que l'objet n'est pas défini.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test()",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
Le test() dans setTimeout n'a pas de paramètres. Il affiche [objet] pour la première fois et n'est pas défini après 1000 millisecondes. La variable n'a pas reçu de paramètre. valeur, ce qui signifie que l'utilisation de cette méthode peut implémenter des boucles de méthode avec des paramètres, mais les paramètres sont détruits.
En fait, c'est très simple à mettre en œuvre, et il n'est pas nécessaire d'écrire un code aussi long pour y parvenir.
<script language="javascript"> function test(obj) { alert(obj); setTimeout("test('"+ obj +"')",1000); } </script> <input id="testButton" type="button" onclick="test(this)">
Notez que les guillemets avant et après le paramètre obj dans test dans setTimeout ont une paire de guillemets simples entre guillemets doubles, comme ceci : setTimeout ("test(guillemet simple Guillemets doubles + obj + guillemets doubles guillemets simples)"), OK~ L'écran affiche [objet] toutes les 1 000 millisecondes et l'objet est transféré avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!