Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 clearInterval之后重新调用setInterval会导致多个间隔(幻灯片)_Javascript_Setinterval_Slideshow_Clearinterval - Fatal编程技术网

Javascript clearInterval之后重新调用setInterval会导致多个间隔(幻灯片)

Javascript clearInterval之后重新调用setInterval会导致多个间隔(幻灯片),javascript,setinterval,slideshow,clearinterval,Javascript,Setinterval,Slideshow,Clearinterval,我对Javascript有点陌生,我很难用正确的方式开发自己的幻灯片 我基本上设置了一个由三幅图像组成的幻灯片,设置了5秒的设置间隔,三个按钮在图片之间导航,等等 我唯一的问题是,在用户单击某个按钮(可能是哪个按钮)后,计时器不会重置 自从昨天我开始研究这个问题以来,我尝试了几种不同的方法,我发现了一种更有效的方法,clearInterval确实在点击按钮后起作用,但发生的是它触发了多个计时器。 比方说,如果我在按钮上单击两次,每次单击间隔一秒,第一个计时器(5秒)将被重置,但是这两次单击创建了

我对Javascript有点陌生,我很难用正确的方式开发自己的幻灯片

我基本上设置了一个由三幅图像组成的幻灯片,设置了5秒的设置间隔,三个按钮在图片之间导航,等等

我唯一的问题是,在用户单击某个按钮(可能是哪个按钮)后,计时器不会重置

自从昨天我开始研究这个问题以来,我尝试了几种不同的方法,我发现了一种更有效的方法,clearInterval确实在点击按钮后起作用,但发生的是它触发了多个计时器。 比方说,如果我在按钮上单击两次,每次单击间隔一秒,第一个计时器(5秒)将被重置,但是这两次单击创建了两个5秒计时器,使幻灯片变得疯狂。我觉得某个地方应该有一个.stop(),但我不知道具体在哪里,甚至不知道这是否是问题所在

function myTimer() {

  var indice_activo = $('.active').index();

  if (indice_activo < $('.intro-slide').length - 1) {

    var proximo_indice = indice_activo + 1;

  } else {
    var proximo_indice = 0;
  }


  mudar_slide(proximo_indice);


  var indice_activo = $('.active').index();

  var botao_anterior = indice_activo - 1

  // var proximo_indice = indice_activo + 1;

  $('.button').removeClass('active-button');

  $('.button').eq(indice_activo).addClass('active-button');


  if (indice_activo > 0) {

    $('.button').eq(botao_anterior).removeClass('active-button');

  } else {

    $('.button').eq(2).removeClass('active-button');
  }
};



  // BUTTON CLICK WITH CLEARINTERVAL AND RE-INVOCATION OF FUNCTION

  $('.button').click(function() {

    clearInterval(intervalo);

    setInterval(myTimer, 5000);


    $('.button').removeClass('active-button');


    var indice_botao_atual = $(this).index();


    $('.intro-slide').removeClass('active').stop().fadeOut();


    $('.intro-slide').eq(indice_botao_atual).addClass('active').stop().fadeIn();

    $(this).addClass('active-button');

  });
函数myTimer(){
变量indice_activo=$('.active').index();
如果(表示活动<$('介绍幻灯片')。长度-1){
变量proximo_Indicie=指标活跃度+1;
}否则{
变量接近指数=0;
}
mudar_滑坡(近指数);
变量indice_activo=$('.active').index();
前路波涛变量=活动指数-1
//变量proximo_Indicie=指标活跃度+1;
$('.button').removeClass('active-button');
$('.button').eq(indice_activo).addClass('active-button');
如果(指示活动>0){
$('.button').eq(botao_-front).removeClass('active-button');
}否则{
$('.button').eq(2).removeClass('active-button');
}
};
//使用CLEARINTERVAL单击按钮并重新调用函数
$('.button')。单击(函数(){
间隙;
设置间隔(myTimer,5000);
$('.button').removeClass('active-button');
var indicate_botao_atual=$(this).index();
$('.intro-slide').removeClass('active').stop().fadeOut();
$('.intro slide').eq(indice_botao_atual).addClass('active').stop().fadeIn();
$(this.addClass('active-button');
});

您忘记关闭
myTimer
功能。这会导致现在在它内部的所有其他代码,在
setInterval
函数每次调用
myTimer
时都被调用

function myTimer() {

  var indice_activo = $('.active').index();

  if (indice_activo < $('.intro-slide').length - 1) {

    var proximo_indice = indice_activo + 1;

  } else {
    var proximo_indice = 0;
  }

} // <--- missing curly brace
函数myTimer(){
变量indice_activo=$('.active').index();
如果(表示活动<$('介绍幻灯片')。长度-1){
变量proximo_Indicie=指标活跃度+1;
}否则{
变量接近指数=0;
}

}//实际上,问题是我正在清除“intervalo”的间隔,这是我为setInterval定义的变量,但我只是在添加setInterval时,clearInterval()仍在阻止我不重新调用的“intervalo”变量,因为在这种情况下,我不知道如何做。
setInterval(myTimer,5000)如果不存储,则无法清除它。你的意思是做->
intervalo=setInterval(myTimer,5000)我不知道为什么花括号没有显示在代码中,但我现在已经插入了它,它不应该在函数中的那个点停止,它实际上在添加/删除按钮上的类后停止,因为它们也包含在同一个函数中,但它仍然不起作用