js捕获变量是否被js更改

时间:2019-01-18 13:06:28

标签: javascript jquery

我有2个按钮,它们是变量的更改状态,如果状态为1,则显示div,否则显示隐藏潜水。我需要捕获此变量的更改并在不同脚本中添加条件,这无需刷新页面即可工作,并且将根据变量添加或隐藏脚本。 这是示例代码:

var point_access = 0;

document.getElementById('button 1').onclick = function() {
  if (point_access == 0) {
    point_access = 1;
    //do smth else
  }
}

document.getElementById('button 2').onclick = function() {
  if (point_access == 1) {
    point_access = 0;
    //do smth else
  }
}

这是我要显示或隐藏脚本的代码,它取决于变量point_access

map = new ol.Map({
  layers: [
    new ol.layer.Tile({
      //smth here
    }),
    new ol.layer.Tile({
      //smth here
    }),
    vectorLayer //this is the variable inside script which i want to show or hide
    //if(point_access == 1){
    //  vectorLayer
    //}
  ],
  //smth else
});

那么,我该如何现场工作?一直都以point_access的价格获得0的价值,并且不听我点击的价值变化。

1 个答案:

答案 0 :(得分:1)

问题在于,要在变量更改时对变量更改做出反应的代码已经运行。您需要使它再次运行以重新检查该变量。如果没有其余的代码,我将无法确切知道将如何发生,但是您将需要重新声明地图或对其进行更新。

例如:

document.getElementById('button 1').onclick = function() {
  if (point_access == 0) {
    point_access = 1;
    updateTheMap();
    //do smth else
  }
}

或者,您可以将变量转换为对象:

point_access = {
   value: 0,
   updateValue: function(value) {
     this.value = value;
     updateTheMap();
   }
}

然后,您可以使用point_access获取point_access.value的值并使用point_access.updateValue(1)进行设置,地图将会更新:

document.getElementById('button 1').onclick = function() {
  if (point_access == 0) {
    point_access.updateValue(1);
    //do smth else
  }
}

当然,您仍然需要提供updateTheMap函数。