2014-03-25 72 views
0

好吧我有這個問題。我在一個函數中使用這個變量,但我必須在另一個函數中重置它,但我不知道如何完成它。從其他函數訪問本地變量的Javascript

我的代碼如下所示:

var city_flag = null; 
    $(".button").click(function(){ 
    var city = $(this).attr("id"); 

    if(city_flag == city){ 
     city_flag = null; 
    } else { 
     city_flag = city; 
    } 
    }); 

而且比我得到這個:(coffescript)

$.fn.extend 
    somelistMap: (options) -> 
    // some settings here 

    // on init addCloseClickListenerToInfoWindow called 

    addCloseClickListenerToInfoWindow = (id) => 
     google.maps.event.addListener markers[id]["infoWindow"], 'closeclick', => 
     resetMap() 
     $(".city_tab").css("background", "none") 
     $(".all_dealers").removeClass("row_hide") 
     $(".all_dealers").addClass("row_show") 
     city_flag = null //Here i have to reset it 

我怎樣才能得到這個工作?我試圖把功能之外的城市旗,但它不工作!

編輯:忘了提環境軌..如果改變的東西

+0

聲明變量* GLOBAL * – Praveen

+0

放變種city_flag您的document.ready外 –

+0

確定我會嘗試....秒 – user2945241

回答

1

city_flag作爲GLOBAL var一樣,

var flag = null, 
    city_flag = null; 
// ..... your remaining code 

您也可以使用this.id,而不是像$(this).attr("id")

var city = this.id; 
+0

感謝優化指針:) – user2945241

2

聲明全局變量不是最佳實踐,但它將解決這個特定的問題EM。 window.city_flag

每當你訪問city_flag使用此。

例如:

window.city_flag = null; 

window.city_flag = city; 
+0

我也嘗試過這一點。沒有什麼似乎改變! 'city_flag'不會重置! – user2945241

0

爲了得到這個工作做如下修改(我不知道你的全部的CoffeeScript結構,這只是一個假設)

$.fn.extend 
    somelistMap: (options) -> 
    // some settings here 

    // on init addCloseClickListenerToInfoWindow called 
////////////////// 
    var that = this; 
/////////////// 
    addCloseClickListenerToInfoWindow = (id) => 
     google.maps.event.addListener markers[id]["infoWindow"], 'closeclick', => 
     resetMap() 
     $(".city_tab").css("background", "none") 
     $(".all_dealers").removeClass("row_hide") 
     $(".all_dealers").addClass("row_show") 
     that.city_flag = null //Here i have to reset it 
0

Okey ...我嘗試了所有提到的,似乎沒有任何工作:/

所以我想出了這個解決方案,我創建隱藏的元素,只是把我的價值與("#hidden").html(),並對其進行重置("#hidden").html("null")

我知道這是不是最好的解決方案,但這種解決方法的工作!