我有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
的价值,并且不听我点击的价值变化。
答案 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
函数。