Javascript从其他函数访问本地变量

时间:2014-03-25 12:33:41

标签: javascript jquery scope

好的,我有这个问题。我在一个函数中使用了这个变量,但是我必须在另一个函数中重置它,但是我不知道如何完成它。

我的代码如下所示:

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

我怎样才能让它发挥作用?我尝试将城市旗帜放在功能之外,但它不起作用!

编辑:忘记提及环境是铁路......如果改变了什么

4 个答案:

答案 0 :(得分:2)

声明全局变量不是最佳实践,但它将解决此特定问题。

只要您访问city_flagwindow.city_flag

,就可以使用此功能

例如:

window.city_flag = null;

window.city_flag = city;

答案 1 :(得分:1)

city_flag设为GLOBAL var之类,

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

您也可以使用this.id代替$(this).attr("id")

var city = this.id;

答案 2 :(得分: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

答案 3 :(得分:0)

Okey ...我尝试了所有提到的东西,似乎没有任何效果:/

所以我想出了这个解决方案,我创建了隐藏元素,只是用("#hidden").html()取得了我的价值并重置了它("#hidden").html("null")

我知道这不是最佳解决方案,但这种解决方法有效!