2009-11-16 71 views

回答

6

你有正確的想法,但你有一個小的問題與變量範圍。爲了減少麻煩,這真是最好的,從使用上setTimeout字符串的eval選項脫身(這是在教程各地的網頁顯示,我知道),並可以使用匿名函數:

var link; 
function loading(){ 
    setTimeout(function(){ 
     link = true; 
    }, 5000); 
} 

這樣,你」我會準確地知道link是在哪裏申報的,範圍很清晰。

9

試試這個:

setTimeout(function() { window.link = true; }, 5000); 

這將設置全局變量 「鏈接」 到真正的5秒後,將滿足您的if語句。

編輯 如果你是一個初學者,但更好的方法來完成,這是使用功能範圍,而不是全球範圍內,這可能是一個有點複雜。

在你的情況,聲明定時器功能是這樣的:

var timer = (function() { 
    var link = false; 
    setTimeout(function() { link = true; }, 5000); 

    return function() { 
     alert(link); 
    }; 
}()); 

這樣,匿名函數返回成爲定時器()其他功能,但這種方式定時訪問其「私有」鏈接變量。欲瞭解更多信息,請登錄Mozilla's article on JavaScript variable scope

+1

Marius,雖然我非常感謝您爲編輯所做的努力,但您移除的花括號是代碼的必要部分(它關閉了初始功能塊) 回滾。 – Matt