我想在单击按钮后调用一个 Javascript 函数,使其每 100 毫秒循环一次,持续 1.5 秒,然后暂停。
我的想法是,我想让这个 Accordion slider 能够使用这个自定义 jQuery 滚动条显示可滚动的内容(我不知道任何其他更好的自定义跨浏览器滚动条)。
每次用户单击其中一项时,都必须使用此函数重建滚动条,使用:
$(".ac-big").customScrollbar("resize")
为了使转换运行顺利,我使用了 setInterval,如下例所示:
<script type="text/javascript">
$(window).load(function () {
$(function(){
setInterval(function(){
$(".ac-big").customScrollbar("resize")
},100);
});
</script>
问题是脚本非常耗费资源。没有必要每 100 毫秒运行一次。我想让它在用户单击一个单选按钮后每 100 毫秒运行一次,持续 1.5 秒。
另一个问题来了。由于 Accordion slider 是使用单选按钮构建的,如何在单选按钮点击时调用 javascript 函数?
我已将 setTimeout 和 setInterval 插入到标记中,因为我相信我必须结合使用这两个。如果我拥有所有必要的构建 block ,我就不会在这里浪费您的时间。
最佳答案
鉴于此:
I want to call a Javascript function after clicking a button, make it loop every 100 milliseconds for 1,5 seconds and then pause it.
应该这样做:http://jsfiddle.net/pUWHm/
// I want to call a Javascript function after clicking a button
$('.button').click(function() {
var started = Date.now();
// make it loop every 100 milliseconds
var interval = setInterval(function(){
// for 1.5 seconds
if (Date.now() - started > 1500) {
// and then pause it
clearInterval(interval);
} else {
// the thing to do every 100ms
$(".ac-big").customScrollbar("resize")
}
}, 100); // every 100 milliseconds
});
该策略是在您单击按钮时开始间隔,并保存该间隔 ID。您还可以在开始时保存。每次间隔运行时,您都会检查它是否足够长。如果还不到时候,就去做吧。如果到了时间,请清除间隔,这样它就不会再次触发。
关于javascript - 每 x 秒调用一个 Javascript 函数并在 y 秒后停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432169/