Javascript 事件处理程序之间的全局变量
我的画布里有一张地图。 我想用鼠标指针拖动这张地图。 我在开始时将全局变量dragMap设置为false,然后 当鼠标按下时将其设置为true,然后在鼠标打开时将其设置为false。 对于拖动,我在mousemove事件和 如果是真的,我会用偏移量重新绘制地图 上面写的是我想要我的代码做的,但它不起作用。在mousemove处理程序中,dragMap varialbe始终为false。单击并拖动此地图时,我的控制台日志显示: true 14 falseJavascript 事件处理程序之间的全局变量,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,我的画布里有一张地图。 我想用鼠标指针拖动这张地图。 我在开始时将全局变量dragMap设置为false,然后 当鼠标按下时将其设置为true,然后在鼠标打开时将其设置为false。 对于拖动,我在mousemove事件和 如果是真的,我会用偏移量重新绘制地图 上面写的是我想要我的代码做的,但它不起作用。在mousemove处理程序中,dragMap varialbe始终为false。单击并拖动此地图时,我的控制台日志显示: true 14 false 您在第三个处理程序中使用了mousedow
您在第三个处理程序中使用了mousedown而不是mouseup
$("#myCanvas").mouseup(function(){
dragMap = false;
});
因此,当mousedown首先发生时,标志被设置为true,然后第二个mousedown
处理程序运行,将其设置为false,因此在mousemove
处理程序中,您将拥有dragMap==false
此外,这些变量不是全局变量(
window
scoped),它们是变量。您的绑定鼠标向下移动两次
改变
$("#myCanvas").mousedown(function(){
dragMap = false;
});
到
所以当鼠标按钮被释放时,dragmap为false
$("#myCanvas").mousedown(function(){
dragMap = false;
});
代码末尾必须是mouseup
$("#myCanvas").mouseup(function(){
dragMap = false;
});
$("#myCanvas").mousedown(function(){
dragMap = false;
});
$("#myCanvas").mouseup(function(){
dragMap = false;
});