Javascript 从不同的函数onclick button2停止递归函数调用onclick button1
我试图通过在单击“停止按钮”时调用不同的函数来确定如何停止来自单击“开始按钮”的递归函数调用Javascript 从不同的函数onclick button2停止递归函数调用onclick button1,javascript,jquery,scope,Javascript,Jquery,Scope,我试图通过在单击“停止按钮”时调用不同的函数来确定如何停止来自单击“开始按钮”的递归函数调用 用户单击“开始按钮”,向下/向上滑动动画继续“无限”循环,直到 用户单击“停止按钮”,循环动画将停止 我想保留两个不同的按钮,而不是一个两用的启动/停止按钮。使用下面的代码,动画开始并循环,但单击“停止”按钮时不会停止。我想让停止按钮在单击时停止动画 您正在同步调用InfiniteLop,这意味着任何其他Javascript都无法执行,比如停止按钮的单击处理程序。您需要使调用异步,以便您的单击处理
- 用户单击“开始按钮”,向下/向上滑动动画继续“无限”循环,直到
- 用户单击“停止按钮”,循环动画将停止
您正在同步调用InfiniteLop,这意味着任何其他Javascript都无法执行,比如停止按钮的单击处理程序。您需要使调用异步,以便您的单击处理程序可以执行。您可以使用
setTimeout(infiniteLoop,0)
这样做,但您仍然无法获得所需的行为,因为在调用InfiniteLop之前,您仍然没有等待滑块向上滑动。因此,您应该将infiniteLoop作为回调传递给slideUp。这将使其异步并等待动画完成:
$('#top_message').slideUp(2000, infiniteLoop);
您的。您正在同步调用InfiniteLop,这意味着任何其他Javascript都无法执行,比如停止按钮的单击处理程序。您需要使调用异步,以便您的单击处理程序可以执行。您可以使用
setTimeout(infiniteLoop,0)
这样做,但您仍然无法获得所需的行为,因为在调用InfiniteLop之前,您仍然没有等待滑块向上滑动。因此,您应该将infiniteLoop作为回调传递给slideUp。这将使其异步并等待动画完成:
$('#top_message').slideUp(2000, infiniteLoop);
您的。问题可能是,当您想要停止动画时,仍有大量动画等待执行(因为您的代码运行速度比实际动画快得多)。通过提供
stop
函数的可选参数clearQueue
,您可以删除所有等待的动画:
$('#top_message').stop(true)
问题可能是,当您想要停止动画时,仍有大量动画等待在队列中执行(因为代码的运行速度比实际动画快得多)。通过提供
stop
函数的可选参数clearQueue
,您可以删除所有等待的动画:
$('#top_message').stop(true)
我会这样写:
$('#start_button').click( function() {
if ( stopSliding ) return false;
$('#top_message').hide().slideDown(2000, function() {
$('#top_message').slideUp(2000, $('#start_button').click);
});
return false;
});
$('#stop_button').click( function() {
stopSliding = true;
$('#top_message').stop();
});
我会这样写:
$('#start_button').click( function() {
if ( stopSliding ) return false;
$('#top_message').hide().slideDown(2000, function() {
$('#top_message').slideUp(2000, $('#start_button').click);
});
return false;
});
$('#stop_button').click( function() {
stopSliding = true;
$('#top_message').stop();
});
我刚刚将
stopSliding
变量重置为flase
,这样,如果再次单击开始动画,它不会停止动画
我刚刚将
stopSliding
变量重置为flase
,这样,如果再次单击开始动画,它不会停止动画
如果你先单击停止动画按钮,脚本将不起作用。我在帖子中修复了它。如果你先单击停止动画按钮,脚本将不起作用。我在帖子中修复了它。我实际上想知道在单击停止按钮后如何重新启用开始滑动按钮。它工作得很好!实际上,我想知道在单击停止按钮后如何重新启用开始滑动按钮。它工作得很好!在测试这段代码时,我注意到动画不会在点击按钮时无限地上下移动——它只运行一次。但是,通过这种方式,“停止”按钮可以更迅速地工作!在测试这段代码时,我注意到动画不会在点击按钮时无限地上下移动——它只运行一次。但是,通过这种方式,“停止”按钮可以更迅速地工作!