簡體   English   中英

試圖為函數和passvariable設置timeout - 不起作用

[英]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的答案所示。

將函數引用傳遞給setTimeoutsetInterval總是比字符串更好,因為后者是被評估的,並且eval'ing是邪惡的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM