Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件处理程序之间的全局变量_Javascript_Jquery_Global Variables - Fatal编程技术网

Javascript 事件处理程序之间的全局变量

Javascript 事件处理程序之间的全局变量,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,我的画布里有一张地图。 我想用鼠标指针拖动这张地图。 我在开始时将全局变量dragMap设置为false,然后 当鼠标按下时将其设置为true,然后在鼠标打开时将其设置为false。 对于拖动,我在mousemove事件和 如果是真的,我会用偏移量重新绘制地图 上面写的是我想要我的代码做的,但它不起作用。在mousemove处理程序中,dragMap varialbe始终为false。单击并拖动此地图时,我的控制台日志显示: true 14 false 您在第三个处理程序中使用了mousedow

我的画布里有一张地图。 我想用鼠标指针拖动这张地图。 我在开始时将全局变量dragMap设置为false,然后 当鼠标按下时将其设置为true,然后在鼠标打开时将其设置为false。 对于拖动,我在mousemove事件和 如果是真的,我会用偏移量重新绘制地图

上面写的是我想要我的代码做的,但它不起作用。在mousemove处理程序中,dragMap varialbe始终为false。单击并拖动此地图时,我的控制台日志显示:

true 14 false
您在第三个处理程序中使用了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;
});