[英]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是邪惡的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.