尝试为函数和passvariable设置超时-dos'不起作用
Trying to settimeout for a function and passvariable - doesn't work
基本上我有一个函数可以传递这个。。。我需要这个功能在点击按钮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的回答所示。
传递对setTimeout
和setInterval
的函数引用总是比传递字符串好,因为后者是求值的,而eval’ing是邪恶的。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- 尝试为函数和passvariable设置超时-dos'不起作用
- 在angular dos'似乎不起作用
- d3.js嵌套选择,dos'不起作用
- 按钮进入工具提示使用qtip插件dos'不起作用
- Javascript:创建新的Object dos'如果在其他文件中,则不起作用
- 简单的JQuery点击并显示dos'不起作用
- 刷新IE 9中的fb IFRAME-dos'不起作用
- Node.js-module:nok-.reply with a callback dos'不起作用
- get余数函数dos'不起作用
- bootstrap动态表单字段dos'不起作用
- jquery mobile toPage select属性dos'不起作用
- orderBy descending order dos'对我来说不起作用
- Angularjs:在angular dos'不起作用