2013-03-14 15 views
13

Come faccio a passare argomenti nella funzione setInterval Esempio:Javascript funzione setInterval con argomenti

intId = setInterval(waiting(argument), 10000); 

Essa mostra errore : useless setInterval call (missing quotes around argument?)

+1

setInterval (function() {attesa (argomento)}, 10000) – rab

+0

possibile duplicato [parametri pass in funzione setInterval] (http://stackoverflow.com/questions/457826/pass-parameters-in-setinterval-function) – 416E64726577

risposta

39

Usa una funzione anonima

intId = setInterval(function(){waiting(argument)}, 10000); 

Questo crea un senza parametri funzione anonima che chiama waiting() con argomenti

o utilizzare i parametri opzionali della funzione setInterval():

intId = setInterval(waiting, 10000, argument [,...more arguments]); 

vostro codice (intId = setInterval(waiting(argument), 10000);) chiama waiting() con argument, assume il valore di ritorno, cerca di trattarlo come una funzione, e imposta l'intervallo per questo valore di ritorno . A meno che waiting() non sia una funzione che restituisce un'altra funzione, ciò non riuscirà, poiché è possibile considerare le funzioni solo come funzioni. Numeri/stringhe/oggetti non possono essere convertiti in una funzione.

6

Utilizzare questo metodo:

var interval = setInterval(callback , 500 , arg1 , arg2[, argn ]); 
[...] 
function callback(arg1, arg2[, etc]){ 
} 

Maggiori informazioni qui: window.setInterval

10

È possibile utilizzare Function#bind:

intId = setInterval(waiting.bind(window, argument), 10000); 

Esso restituisce una funzione che chiamerà la funzione di destinazione con il contesto dato (window) e qualsiasi argomento facoltativo.

-2

setInterval (function() {funca (10,3);}, 500);

+0

[Questo] (https://stackoverflow.com/q/457826/4642212) è la domanda a cui stavi cercando di rispondere. – Xufox

1

È possibile utilizzare le funzioni di associazione e applicazione per memorizzare l'argomento in stato.

Esempio utilizzando bind in guscio nodo:

> var f = function(arg) { console.log (arg);} 
> f() 
undefined 
> f("yo") 
yo 
> var newarg = "stuff"; 
> f(newarg) 
stuff 
> var fn = f.bind(this, newarg); 
> fn() 
stuff 
> var temp = setTimeout(fn,1000) 
> stuff 
Problemi correlati