Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Function_Canvas - Fatal编程技术网

结束JavaScript函数及其所有内容

结束JavaScript函数及其所有内容,javascript,jquery,function,canvas,Javascript,Jquery,Function,Canvas,我在JavaScript中有一个函数,它将运行并且在激活后不会停止,我需要一种完全停止这个函数及其所有内容和事件的方法 line.addEventListener('click', function () { $(function(){ var canvasOffset=$("#canvas").offset(); var offsetX=canvasOffset.left; var offsetY=canvasOffset.top; window.alert(offs

我在JavaScript中有一个函数,它将运行并且在激活后不会停止,我需要一种完全停止这个函数及其所有内容和事件的方法

line.addEventListener('click', function () {
   $(function(){

    var canvasOffset=$("#canvas").offset();
   var offsetX=canvasOffset.left;
  var offsetY=canvasOffset.top;
window.alert(offsetX);
    var startX;
    var startY;
    var isDown=false;
   var canvas2 = $("#canvas");



    function drawLine(toX,toY,context){
        context.beginPath();
        context.moveTo(startX, startY);
        context.lineTo(toX,toY);
        context.stroke();
    }

    function handleMouseDown(e){
      e.preventDefault();
      mouseX=parseInt(e.clientX-offsetX);
      mouseY=parseInt(e.clientY-offsetY);

      // save drag-startXY, 
      // move temp canvas over main canvas,
      // set dragging flag
      startX=mouseX;
      startY=mouseY;
      contextTemp.clearRect(0,0,canvasTemp.width,canvasTemp.height);
      $("#canvasTemp").css({ left:0, top:0 });
      isDown=true;
    }

    function handleMouseUp(e){
      e.preventDefault();
      if(!isDown){return;}
      // clear dragging flag
      // move temp canvas offscreen
      // draw the user's line on the main canvas
      isDown=false;
      mouseX=parseInt(e.clientX-offsetX);
      mouseY=parseInt(e.clientY-offsetY);

      drawLine(mouseX,mouseY,context);
    }

    function handleMouseMove(e){
      e.preventDefault();        
      if(!isDown){return;}
      mouseX=parseInt(e.clientX-offsetX);
      mouseY=parseInt(e.clientY-offsetY);
      // clear the temp canvas
      // on temp canvas draw a line from drag-start to mouseXY
      contextTemp.clearRect(0,0,canvasTemp.width,canvasTemp.height);
      drawLine(mouseX,mouseY,contextTemp);
    }

  canvas2.mousedown(function(e){handleMouseDown(e);});
    canvas2.mousemove(function(e){handleMouseMove(e);});
  canvas2.mouseup(function(e){handleMouseUp(e);});
 canvas2.mouseout(function(e){handleMouseUp(e);});


}); // end $(function(){});
});
此功能需要在变量上停止运行,例如单击停止按钮


但是它不能停止所有其他正在运行的函数,为什么不首先解除设置的事件的绑定,因为您已经在使用jQuery,您可以执行sg。比如:

var handleMouseDown = function(e) {
  /* ... */
};

// bind the event:
$( "#canvas" ).bind( "click", handler );

// unbind again:
$( "#canvas" ).unbind( "click", handler );
要删除函数,请执行以下操作:

 var fn = function() {
     alert( 1 );
 }
 fn();
 fn = undefined;
 fn(); 

哪一个函数需要停止运行?你能解释一下你的问题是什么吗?我只是看到有一个函数在单击时执行…你不能停止函数运行,但是你可以使用一个标志来确定是否需要执行某些东西。也可能有帮助。此ocde用于绘制线,它位于画布应用程序上,因此当用户单击“线”按钮时,它将允许他们绘制线,但我希望它在单击“停止”按钮时停止绘制线,所以我想知道如何使用Finish这个函数,如果我知道如何解除事件绑定,我会这样做,但我不会,因为事件看起来像这样,如果它们的格式不同,我可以,但我不知道下面的代码是如何使用canvas2.mousedown(函数(e){handleMouseDown(e);});canvas2.mousemove(函数(e){handleMouseMove(e);});canvas2.mouseup(函数(e){handleMouseUp(e);});canvas2.mouseout(函数(e){handleMouseUp(e);});我还没试过,明天会做的:D会让你知道我希望有好的结果,lolI无法得到你展示给我的代码,我不知道我是否做对了,尽管有点困惑。你能帮我按照你认为我应该做的方式来做吗?