Добавьте таймер , добавляющий класс в div, затем удалите класс и добавьте его в другой div

#javascript #jquery

Вопрос:

Я создаю учебник, в котором в 4 этапа объясняется, как работает приложение.

В настоящее время при нажатии на один из шагов добавляется класс, который изменяет текст и отображает дополнительное изображение.

Я бы хотел, чтобы этот процесс также был автоматическим и запускал это действие на каждом шаге, последовательно, через несколько секунд.

Я думаю, что мне нужно использовать функцию setTimeout (), но я не могу представить, как перейти от одного шага к другому ( и в идеале сделать цикл, когда процесс перейдет к шагу 4).

вот мой код, чтобы он был более понятным.

Большое спасибо за вашу помощь

 jQuery(".tutorial-point").click(function (e) {  jQuery(".tutorial-point").removeClass("active-tuto");  jQuery(this).addClass("active-tuto"); });  jQuery('.tutorial-point').on('click', function (e) {  e.preventDefault();  var imgSRC = jQuery(this).data('src');   jQuery('#imageFlowchart').html('lt;img src="'   imgSRC   '" alt="" /gt;'); }); 
 .tutorial-container {  background: #002832;  display: flex;  flex-direction:column;  justify-content: space-around;  max-width: 1200px;  padding: 5rem 1rem;  margin: auto; }  .tutorial-text-block {  max-width: 430px; }  .tutorial-title {  color: white;  padding-bottom: 2rem;  padding-top: 2rem; }  .tutorial-point {  cursor: pointer;  color: #7384A7;  padding: 10px;  display: flex; }  .tutorial-point:before {  content: url("https://cdn.unitplus.eu/images/checkbox-blank-circle-line.svg");  padding-right: 12px; }  .tutorial-img-block {  align-self: center; }  .active-tuto { color: white; display: flex;   }  .active-tuto:before {  content: url("https://cdn.unitplus.eu/images/checkbox-circle-line.svg");  padding-right: 12px; }  .tuto-img {  height: 360px;  width: 360px; }  .tuto-img img {  height: 360px;  width: 360px; animation: fadeIn 1s; -webkit-animation: fadeIn 1s; -moz-animation: fadeIn 1s; -o-animation: fadeIn 1s; -ms-animation: fadeIn 1s; } @keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-moz-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-webkit-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-o-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-ms-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  #tutoImg { height: 360px; width: 360px; }  .tutorial {  margin-top: 6rem;  width: 100%;  background-color:#002832 ; }  .tutorial.img-block {  align-self: center; }  .white-logo {  background-image: url("https://cdn.unitplus.eu/images/checkbox-circle-line.svg"); }  .black-logo {  background-image: url("https://cdn.unitplus.eu/images/checkbox-blank-circle-line.svg"); } 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;div class="tutorial"gt;  lt;div class="tutorial-container"gt;  lt;div class="tutorial-text-block"gt;Here is the tutoriallt;/divgt;  lt;div class="tutorial-paragraph-block"gt;  lt;div class="active-tuto tutorial-point text-font-16" data-src="https://via.placeholder.com/150"gt;  lt;divgt;Step 1lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/151"gt;  lt;divgt;Step 2lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/152"gt;  lt;divgt;Step 3lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/153"gt;  lt;divgt;Step 4lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;div class="tutorial-img-block"gt;  lt;div id="imageFlowchart" class="tuto-img"gt;  lt;img src="https://via.placeholder.com/150" alt=""gt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt; 

Ответ №1:

Это может сработать, используя trigger() функцию

 const interval = setInterval(() =gt; {  const next = jQuery('.active-tuto').next('.tutorial-point');  next.length gt; 0 ? next.trigger('click') : clearInterval(interval); }, 3000);  

Он запускает событие щелчка на следующем шаге каждые 3 секунды до последнего шага.

 let interval;  const auto = () =gt; {  if (interval) {  clearInterval(interval);  }  interval = setInterval(() =gt; {  const next = jQuery('.active-tuto').next('.tutorial-point');  next.length gt; 0 ? next.trigger('click') : clearInterval(interval);  }, 3000); }; auto();  jQuery(".tutorial-point").click(function (e) {  jQuery(".tutorial-point").removeClass("active-tuto");  jQuery(this).addClass("active-tuto");  auto(); });  jQuery('.tutorial-point').on('click', function (e) {  e.preventDefault();  var imgSRC = jQuery(this).data('src');   jQuery('#imageFlowchart').html('lt;img src="'   imgSRC   '" alt="" /gt;'); }); 
 .tutorial-container {  background: #002832;  display: flex;  flex-direction:column;  justify-content: space-around;  max-width: 1200px;  padding: 5rem 1rem;  margin: auto; }  .tutorial-text-block {  max-width: 430px; }  .tutorial-title {  color: white;  padding-bottom: 2rem;  padding-top: 2rem; }  .tutorial-point {  cursor: pointer;  color: #7384A7;  padding: 10px;  display: flex; }  .tutorial-point:before {  content: url("https://cdn.unitplus.eu/images/checkbox-blank-circle-line.svg");  padding-right: 12px; }  .tutorial-img-block {  align-self: center; }  .active-tuto { color: white; display: flex;   }  .active-tuto:before {  content: url("https://cdn.unitplus.eu/images/checkbox-circle-line.svg");  padding-right: 12px; }  .tuto-img {  height: 360px;  width: 360px; }  .tuto-img img {  height: 360px;  width: 360px; animation: fadeIn 1s; -webkit-animation: fadeIn 1s; -moz-animation: fadeIn 1s; -o-animation: fadeIn 1s; -ms-animation: fadeIn 1s; } @keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-moz-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-webkit-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-o-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  @-ms-keyframes fadeIn { 0% {opacity:0;} 100% {opacity:1;} }  #tutoImg { height: 360px; width: 360px; }  .tutorial {  margin-top: 6rem;  width: 100%;  background-color:#002832 ; }  .tutorial.img-block {  align-self: center; }  .white-logo {  background-image: url("https://cdn.unitplus.eu/images/checkbox-circle-line.svg"); }  .black-logo {  background-image: url("https://cdn.unitplus.eu/images/checkbox-blank-circle-line.svg"); } 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;div class="tutorial"gt;  lt;div class="tutorial-container"gt;  lt;div class="tutorial-text-block"gt;Here is the tutoriallt;/divgt;  lt;div class="tutorial-paragraph-block"gt;  lt;div class="active-tuto tutorial-point text-font-16" data-src="https://via.placeholder.com/150"gt;  lt;divgt;Step 1lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/151"gt;  lt;divgt;Step 2lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/152"gt;  lt;divgt;Step 3lt;/divgt;  lt;/divgt;  lt;div class="tutorial-point text-font-16" data-src="https://via.placeholder.com/153"gt;  lt;divgt;Step 4lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;div class="tutorial-img-block"gt;  lt;div id="imageFlowchart" class="tuto-img"gt;  lt;img src="https://via.placeholder.com/150" alt=""gt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt;