2011-05-02 107 views
2

下面的代碼:變量值不會改變原因?

var popupFirstName; 
PopupFirstNameButton.addEventListener('click', function(){ 
    popupFirstName = 'SomeValue'; 
}); 

當我alert(popupFirstName)在一些其他的功能,它說undefined。我如何獲得價值?

+0

我想這是因爲'popupFirstName'是一個局部變量,而不是全局你使用它的,但沒有更多的代碼很難說。我們能否看到其他相關的JavaScript代碼? – pickypg 2011-05-02 18:39:20

回答

2

popupFirstName在它的放置位置有一個本地範圍,我們不知道您告訴我們什麼。但我想它是在一個函數中,所以範圍將在本函數中。你定義的函數繼承對該變量的訪問;這是該語言的一個便利功能。

如果您想要創建具有全局範圍的變量的單個實例,請編寫window.popupFirstName

1

在哪個瀏覽器中測試? Firefox需要第三個參數addEventListener,IE使用完全不同的方法(attachEvent)。

你可以嘗試將功能分配給onclick

PopupFirstNameButton.onclick = function(){ 
    popupFirstName = 'SomeValue'; 
}; 

如果您想了解更多關於高級事件處理和跨瀏覽器的問題,或有關JavaScript和一般事件,我建議閱讀好articles on quirksmode.org

毫無疑問,必須在設置變量之前點擊按鈕,並且您調用alert(popupFirstName)的功能必須有權訪問該變量。

0

確保此變量在與調用它的函數相同的塊範圍內聲明。