Javascript 设置间隔仅在第一次工作时有效。有什么解决办法吗?
我想连续运行这个函数。但它只在第一次正常工作。是否有任何解决方案可以持续使用此功能Javascript 设置间隔仅在第一次工作时有效。有什么解决办法吗?,javascript,jquery,html,Javascript,Jquery,Html,我想连续运行这个函数。但它只在第一次正常工作。是否有任何解决方案可以持续使用此功能 $(文档).ready(函数(){ 设置间隔(()=>{ $(“#开放带”)。触发器('click'); 设置超时(()=>{ $('闭合带')。触发('点击'); }, 50000); }, 15000); }); 如果setInterval内的代码花费的时间超过了您设置的时间,那么它将在函数结束之前创建另一个进程。所以选择setTimeout实际上更好 要使函数在setTimeout中循环,请使用以下语法:
$(文档).ready(函数(){
设置间隔(()=>{
$(“#开放带”)。触发器('click');
设置超时(()=>{
$('闭合带')。触发('点击');
}, 50000);
}, 15000);
});
如果setInterval内的代码花费的时间超过了您设置的时间,那么它将在函数结束之前创建另一个进程。所以选择setTimeout实际上更好
要使函数在setTimeout中循环,请使用以下语法:
function function1() {
// something here
}
function runner() {
function1();
setTimeout(function() {
runner();
}, time);
}
runner();
您应该使用此函数更改当前函数
$(document).ready(function() {
setInterval(() => {
$('#open-band').trigger('click');
}, 15000);
setTimeout(() => {
$('#close-band').trigger('click');
}, 50000);
});
根据问题下的评论,解释您的目标: 我想在页面加载15秒后触发一个按钮来显示div,50秒后再触发另一个按钮来关闭div&我想连续运行这个按钮 我建议您链接
setTimeout()
调用,而不是使用setInterval()
,这将导致事件重叠并变得混乱。我还建议您直接在所需的元素上调用show()
和hide()
,而不是假装在DOM中单击事件。试试这个:
函数openBand(){
$('#yourElement').show();
设置超时(闭合带,50000);
}
函数闭带(){
$('#yourElement').hide();
设置超时(openBand,15000);
}
$(文档).ready(函数(){
设置超时(openBand,15000);
//或者直接在这里调用closeBand(),如果元素开始时是隐藏的
});
您希望此代码具体做什么?代码段中的一个工作示例在这里会有很大帮助。如果没有看到选择器选择的HTML,就无法说明此代码为什么不工作。您的setTimeout
比setInterval
超时长得多-对于关闭超时,您的意思可能是5000
。事实上,关闭似乎不起作用。不知道“它只在第一次正常工作”是什么意思。@RoryMcCrossan您好,我想在页面加载15秒后触发一个按钮显示div,50秒后触发另一个关闭div的触发器。&我想连续运行此操作。您的意思是:在15秒显示后,等待50秒隐藏,等待15秒显示,等待50秒隐藏?当页面被“连续”加载时,您不能运行“when page is loaded”,因为页面只加载一次。虽然很有趣,但这里的情况不太可能是这样,因为setTimeout不会花费时间初始化,而且,根据上下文,单击可能只调用.show(),这不会花费15秒。为什么?这将实现什么?在第一次设置超时后,它肯定不会工作。我更改了show()和hide()来触发按钮,它工作得很好。非常感谢:)没问题,很乐意帮忙