Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置间隔仅在第一次工作时有效。有什么解决办法吗?_Javascript_Jquery_Html - Fatal编程技术网

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()来触发按钮,它工作得很好。非常感谢:)没问题,很乐意帮忙