结束JavaScript函数及其所有内容
我在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
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无法得到你展示给我的代码,我不知道我是否做对了,尽管有点困惑。你能帮我按照你认为我应该做的方式来做吗?