2010-10-22 96 views
0

我該如何實現它?從javascript中的另一個模塊更新全局變量?

我有一個名爲「tooltip」的模塊,它具有一個「淡入淡出」功能,該功能反過來使用全局「元素」變量。該變量是對DOM元素的引用。我想從另一個名爲「lightbox」的模塊更新它,所以我可以讓「淡入淡出」函數處理淡入效果。我所有的模塊都使用閉包來聲明。

var tooltip = function{ 
     var element; 
     return{ 
      fade: function(){ fade code goes here...} 
     }; 
    }(); 

我可以只做以下操作來更新燈箱模塊中的「元素」嗎?

tooltip.element = document.getElementByID('lightbox-con'); 

沒有jQuery代碼請...

+0

您的代碼在語法上不正確。你不能在函數表達式中省略'()'。請糾正這一點。 – 2010-10-22 11:12:36

回答

1

如果有模塊你的意思是對象那麼你可以這樣做:

var tooltip = { 
    element: null, 
    fade: function() { 
     //fade code goes here... 
     // you can access the element via this.element 
    } 
} 

然後可更新元素如你所述:

tooltip.element = document.getElementByID('lightbox-con'); 

但如果elementfade功能只用,你也可以考慮的元素只是傳遞給函數:

var tooltip = { 
    fade: function(element) { 
     //fade code goes here... 
    } 
} 

做:

tooltip.fade(document.getElementByID('lightbox-con')); 

這取決於你真正想要做什麼。

+0

我想那基本上就是這樣。 tooltip和lightbox是對象,每個對象都在一個單獨的文件中。剛開始學習,所以我仍然找到我的方式.. – Joann 2010-10-22 11:05:25

+0

沒有元素是一個全局變量...謝謝! – Joann 2010-10-22 11:08:13

+0

@Joann:不確定我是否理解。在您的原始代碼中,'element'不是全局變量。它對匿名函數是本地的。你不能像你用原始代碼描述的那樣改變它。 – 2010-10-22 11:10:01