Frage

Bitte geben wie Parameter in eine Funktion mit setInterval genannt zu übergeben.

Mein Beispiel setInterval(funca(10,3), 500); ist falsch.

War es hilfreich?

Lösung

Sie müssen eine anonyme Funktion erstellen, so dass die eigentliche Funktion nicht sofort ausgeführt wird.

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

Andere Tipps

jetzt mit ES5, bind Methode Funktionsprototyp:

setInterval(funca.bind(null,10,3),500);

hier Referenz

Fügen Sie sie als Parameter an setInterval:

setInterval(funca, 500, 10, 3);

Die Syntax in Ihrer Frage verwendet eval, die Praxis nicht zu empfehlen ist.

Sie können die Parameter (n) als eine Eigenschaft der Funktion Objekts übergeben, nicht als Parameter:

var f = this.someFunction;  //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);

Dann in Ihrer Funktion someFunction, haben Sie Zugriff auf die Parameter haben. Dies ist besonders nützlich im Inneren Klassen, in denen der Umfang an den globalen Raum geht automatisch und Sie Verweise auf die Klasse verlieren, die setInterval genannt zu beginnen. Mit diesem Ansatz „parameter2“ in „somefunction“, in dem obigen Beispiel wird den richtigen Umfang hat.

     setInterval(function(a,b,c){

          console.log(a + b +c);  

      }, 500, 1,2,3);

           //note the console will  print 6
          //here we are passing 1,2,3 for a,b,c arguments
         // tested in node v 8.11 and chrome 69

Sie können eine anonyme Funktion verwenden;

setInterval(function() { funca(10,3); },500);
setInterval(function,milliseconds,param1,param2,...)

Update: 2018 - nutzen Sie den "Spread" Operator

function repeater(param1, param2, param3){
   alert(param1);
   alert(param2);
   alert(param3); 
}

let input = [1,2,3];
setInterval(repeater,3000,...input);

Bei weitem die praktische Antwort derjenige von tvanfosson gegeben ist, alles, was ich tun kann, ist, geben Sie eine aktualisierte Version mit ES6:

setInterval( ()=>{ funca(10,3); }, 500);

die Argumente Zitiert sollte genug sein, um:

OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)

KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)

Beachten Sie die Apostroph ' für jedes Argument.

Getestet mit IE8, Chrome und FireFox

Ich weiß, das Thema ist so alt, aber hier ist meine Lösung über Parameter in setInterval Funktion übergeben.

HTML:

var fiveMinutes = 60 * 2;
var display = document.querySelector('#timer');
startTimer(fiveMinutes, display);

JavaScript:

function startTimer(duration, display) {
    var timer = duration,
        minutes, seconds;

    setInterval(function () {
        minutes = parseInt(timer / 60, 10);
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;
        --timer; // put boolean value for minus values.

    }, 1000);
}

Das funktioniert setInterval("foo(bar)",int,lang); .... Jon Kleiser mich auf die Antwort führen.

Eine andere Lösung besteht in pass Ihre Funktion wie das (wenn Sie bekam Dynamik haben VARs): setInterval ( 'funca (' + x + ' '+ y +')', 500);

Sie können eine Bibliothek verwenden Underscore.js genannt. Es gibt einen schönen Wrapper auf der bind-Methode und ist eine viel saubere Syntax als auch. Lassen Sie die Funktion im angegebenen Bereich auszuführen.

http://underscorejs.org/#bind

_. Bind (Funktion, Umfang, * Argumente)

Das Problem wäre eine schöne Demonstration für die Verwendung von Verschlüssen sein. Die Idee ist, dass eine Funktion eine Variable vom äußeren Umfang verwendet. Hier ist ein Beispiel ...

setInterval(makeClosure("Snowden"), 1000)

function makeClosure(name) {
var ret

ret = function(){
    console.log("Hello, " + name);
}

return ret;
}

Die Funktion „makeClosure“ liefert eine andere Funktion, die den Zugriff auf äußeren Umfang Variable „name“ hat. Also, im Grunde, müssen Sie in irgendeiner Variablen passieren zu „makeClosure“ Funktion und nutzen sie in Funktion zugewiesen Variable „ret“. Affectingly wird setInterval-Funktion „ret“ zugewiesen auszuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top