请告知如何将参数传递到使用setInterval调用的函数。

我的例子setInterval(funca(10,3), 500);不正确。

有帮助吗?

解决方案

您需要创建一个匿名函数,因此不执行就实际的功能。

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

其他提示

现在与ES5,绑定方法函数原型:

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

<强> 参考这里

它们作为参数添加给setInterval:

setInterval(funca, 500, 10, 3);

在您的问题的语法使用eval,这是不推荐的做法。

可以传递参数(一个或多个)作为功能对象的属性,而不是作为一个参数:

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

然后在你的功能someFunction,你将有机会获得的参数。这是特别有用的内部类,其中范围进入到全球空间自动和你失去了那所谓的setInterval开始与类引用。用这种方法,“参数2”,在“someFunction”,在上述的例子中,将具有权利范围。

     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

可以使用匿名功能;

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

更新:2018 - 使用 “扩展” 操作符

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

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

到目前为止,最实用的答案是tvanfosson给出的,所有我能做的就是给你一个更新的版本ES6:

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

引用的参数应该是足够:

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

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

请注意为每个参数的单引号'

与IE8,铬和Firefox测试

我知道这个话题是如此古老,但这里是我的关于setInterval函数传递参数解决方案。

<强> 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);
}

这工作setInterval("foo(bar)",int,lang); .... 乔恩克莱泽使我的答案。

另一解决方案包括通过你的函数一样,(如果你已经有了动态瓦尔): 的setInterval( 'FuncA的行(' + X + ' '+ Y +')',500);

您可以使用一个名为下划线JS库。它详细介绍了绑定方法一个很好的包装,是一种更清洁的语法为好。让你在指定的范围执行该功能。

http://underscorejs.org/#bind

_。绑定(功能,范围,参数*)

这问题将是使用闭包的一个很好的示范。这个想法是,一个函数使用外部范围的变量。下面是一个例子...

setInterval(makeClosure("Snowden"), 1000)

function makeClosure(name) {
var ret

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

return ret;
}

功能“makeClosure”返回另一个函数,该函数可以访问外部范围变量“名称”。所以,基本上,你需要传递任何变量“makeClosure”功能,并在分配给“RET”变函数中使用它们。 Affectingly,setInterval的将执行分配到“退役”的功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top