в чем ошибка, что при клике должен включится новый таймер а старый отключится а получается все перемешанно

если выполнить код в первом блоке должны появляться вопросы по порядку по истечении времени, но если не дождаться и клацнуть посмотрите что получается

$(".next").click(function () {
  var numberQuestion = $(this).data('order');
  var wrapBlock = $('.wrap-block-test');
  var questionDiv;
  
  const secondsToAnswer = 5; // Количество секунд для ответа
    let timeLeft = secondsToAnswer;
    clearInterval(this.timer);
    this.timer = setInterval(function() {
        if (timeLeft > 0) { // На последней секунде
            $('.display').text(timeLeft + ' сек');
            timeLeft--;
        } else {
            $('.display').text(0 + ' сек');
            clearInterval(this.timer);
            $('.next_'+numberQuestion).click();
            
        }
    }, 1000);
    
    if(!numberQuestion) {
       //значит это вступительный вопрос
       numberQuestion = 0;
    }
    
    numberQuestion++;
    
    //клонируем вопрос
    questionDiv = $('.question_'+numberQuestion).clone(true);
            questionDiv.find('.next').addClass('next_'+numberQuestion);
            //заменяем его тюе показываем следующий вопрос
            wrapBlock.html(questionDiv);
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="wrap-timer-test">
                    <div id="countdown">
                      <h1><span class="display">5</span></h1>
                    </div>
                </div>
<div id="major" class="wrap-block-test">
  <div class="block-test question_0">
    <h2>вступительный вопрос</h2>
    <button type="button" data-order="0" data-a="btn" class="btn btn-info btn-block next">Start test</button>
  </div>
</div>

<!-- блок откуда клонируем вопросы-->

<div class="test hidden">
  <div class="block-test question_1">
    <h2>Вопрос1</h2>
    <button type="button" data-order="1" class="btn btn-info btn-block next">Next</button>
  </div>
  <div class="block-test question_2">
    <h2>Вопрос2</h2>
    <button type="button" data-order="2" class="btn btn-info btn-block next">Next</button>
  </div>
  <div class="block-test question_3">
    <h2>Вопрос3</h2>
    <button type="button" data-order="3" class="btn btn-info btn-block next">Next</button>
  </div>
</div>


Ответы (1 шт):

Автор решения: NoSkill

Во первых, таймер должен быть один глообальный на все вопросы. Во вторых, с помощью JQuery можно существенно упростить навигацию.

А вообще, я бы сделал одну кнопку "Next"... Но это уже совсем другая история!

var wrapBlock = $('.wrap-block-test');
var buttons = $('.next');

const secondsToAnswer = 5; // Количество секунд для ответа
var timerID;

function end() {
  $('.display').text('-');
  wrapBlock.html("Это фиаско, братан!");
}

function run(order) {
  // останавливаем таймер
  if (timerID) {
    clearInterval(timerID);
  }

  if (order >= buttons.length) {
    // если следущего вопроса нет, тогда конец
    end() 
  } else {
    // если следущий вопрос есть, тогда продолжим

    // клонируем вопрос и показываем
    wrapBlock.html(buttons.filter('[data-order="' + order + '"]').closest('.question').clone(true));
    
    // запускаем таймер
    var timeLeft = secondsToAnswer;
    $('.display').text(timeLeft + ' сек');
    timerID = setInterval(function() {
      timeLeft--;
      if (timeLeft > 0) {
        $('.display').text(timeLeft + ' сек');
      } else {
        $('.display').text(0 + ' сек');
        clearInterval(timerID);

        // запускаем следующий вопрос
        run(order + 1);
      }
    }, 1000);  
  }
}

function onClick(event) {
  // определяем номер текущего вопроса (если неопределен, то 0)
  var order = parseInt($(this).data('order')) || 0;
  
  // запускаем следующий вопрос
  run(order + 1);

  event.preventDefault();
}
  
buttons.click(onClick);
.hidden {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h1><span class="display">-</span></h1>

<div id="major" class="wrap-block-test">
  <div class="block-test question">
    <h2>Вступительный вопрос</h2>
    <button type="button" data-order="0" data-a="btn" class="btn btn-info btn-block next">Start test</button>
  </div>
</div>

<!-- блок откуда клонируем вопросы-->

<div class="test hidden">
  <div class="block-test question">
    <h2>Вопрос 1</h2>
    <button type="button" data-order="1" class="btn btn-info btn-block next">Next</button>
  </div>
  <div class="block-test question">
    <h2>Вопрос 2</h2>
    <button type="button" data-order="2" class="btn btn-info btn-block next">Next</button>
  </div>
  <div class="block-test question">
    <h2>Вопрос 3</h2>
    <button type="button" data-order="3" class="btn btn-info btn-block next">Next</button>
  </div>
</div>

→ Ссылка