function tool_line(action, x, y) {
console.log(action);
if (!mouseisdown) {
return;
}
switch (action) {
case "mousedown":
startx = x;
starty = y;
break;
case "mousemove":
if (mouseisdown) {
$(current_marker).remove();
current_marker = svg_line(x1, y1, x2, y2);
}
break;
case "mouseup":
console.log('why don't go there?'); // Question!
svg_line(x1, x2, y1, y2);
break;
}
}
console.log说
鼠标按下 181 mousemove 鼠标松开
与上面的代码一样,传入的操作实际上在前两种情况下表现良好,但即使控制台说" mouseup",它仍然没有通过第三种情况?我的代码出了什么问题?
答案 0 :(得分:0)
是因为您在mouseisdown
为假时返回。你的代码说在第一种情况下鼠标停机,这就是它被击中的原因。在第二种情况下,鼠标必须向下甚至执行传递if
语句。所以你在按住左键的同时移动鼠标。
现在,第三个案例mouseup
无法满足mouseisdown
要求。 (当操作是false
时,我非常确定该标志是mouseup
,因为它是相反的,因此在执行其他所有操作之前返回函数,这使得switch语句无法访问。
要测试这个,只需删除第一个if statement
,然后检查是否可以点击mouseup
。如果你这样做,你就会遇到与逻辑相关的错误。