尝试为函数和passvariable设置超时-dos'不起作用

Trying to settimeout for a function and passvariable - doesn't work

本文关键字:-dos 不起作用 超时 设置 函数 passvariable      更新时间:2024-05-01

基本上我有一个函数可以传递这个。。。我需要这个功能在点击按钮1/3秒后执行,所以我想做的是:

setTimeout("somefunction(this)", 3000);

正如我所知,setTimeout(",x);使用"但它不起作用。

我试过没有",它也不会起作用。我试过:

  setTimeout("somefunction("+this+")", 3000);

但仍然不起作用。做了一个小时的尝试。

如有任何帮助,我们将不胜感激。

您需要使用闭包

var that = this;
setTimeout( function(){ somefunction(that); }, 3000);

超时是异步事件,因此上下文丢失。保存它的一种方法是通过立即执行的函数绑定它。

setTimeout((function(that) {
    return function() { somefunction(that); };
})(this), 3000);

另一种方法是引用变量中的外部范围,正如@epascarello的回答所示。

传递对setTimeoutsetInterval的函数引用总是比传递字符串好,因为后者是求值的,而eval’ing是邪恶的。