2012-10-27 46 views
2

因此,我有两个html按钮,每个运行不同的函数(两个函数都在下面)。基本上,您可以单击两个按钮中的一个来将Google Maps actionlistener添加到地图。我已经成功地将它工作。唯一的问题是我只希望actionlistener可以一键点击。之后,点击一次,我希望用户必须在actionlistener再次“侦听”之前点击另一个按钮。我希望这是有道理的。如何在运行一次后“禁用”javascript函数

function addLaunch() { 
google.maps.event.addListener(map, "click", function(event) { 
    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 

    }); 
    infowindow.open(map, marker); 
}); 
}; 
function addFishing() { 
google.maps.event.addListener(map, "click", function(event) { 
    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 
    }); 
    fishinfowindow.open(map, marker); 
}); 
}; 

所以我只是尝试这样做:

function addLaunch(setBoolean) { 
var clicked = new Boolean(false); 
    clicked.boolValue = setBoolean; 
if (clicked = true) { 
google.maps.event.addListener(map, "click", function(event) { 
    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 

     }); 
     infowindow.open(map, marker); 
     clicked.boolValue = false; 
    }); 
    } 
    else { 
    google.maps.event.clearListeners(map, "click"); 
    } 
}; 

,并没有奏效.....请点我在正确的方向... (顺便说一句,该按钮通过“真“到‘setBoolean’。

此作品首次点击后,禁用所有的ActionListeners,但按钮被再次点击后它不会重置。

var temp = true; 
function addLaunch() { 
    if (temp == true) { 
     google.maps.event.addListener(map, "click", function(event) { 
    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 

     }); 
infowindow.open(map, marker); 
     temp = false; 
     if (temp == false) { 
     google.maps.event.clearListeners(map, "click"); 
       } 
     }); 
    } 
} 
+0

解除绑定功能 –

+0

的,如果用'clicked'标志 – jsj

回答

1

使用google.maps.event.addListenerOnce()

documentation:

addListenerOnce(例如:对象,eventName的:字符串处理函数:功能) MapsEventListener一样的addListener,但处理程序处理的第一个事件后删除自身 。

0

设置2个布尔标志(btn1Clicked, btn2Clicked),表示按钮的状态(是否点击),所以只有在btn2Clicked为真的情况下才可以触发聆听。

1

这应该解决这个问题:

例 -

<input id="Button1" type="button" value="button" onclick="a()" /> 
<input id="Button2" type="button" value="button" onclick="b()" /> 

<script type="text/javascript"> 
    var temp = true; 
    function a() { 
     if (temp == true) { 
      alert('1'); //Replace your function's code here 
      temp = false; 
     } 
    } 
    function b() { 
     if (temp == false) { 
      alert('2'); // Replace your function's code here 
      temp = true; 
     } 
    } 
</script> 
+0

Cdeez声明,我认为还是可以让他们希望用户点击的实际地图上许多倍。它只是不允许你同时添加另一个按钮,对吧?我仍然需要点击一下按钮才能禁用。 – HondaKillrsx

+0

好吧,我现在明白了。稍后尝试更新我的答案。 – Cdeez

+0

请参阅编辑代码 – Cdeez

相关问题