Я хочу, чтобы мой модал отображался в виде всплывающего окна каждые 5 секунд без нажатия кнопки, но я не могу этого сделать. Я использовал функцию jquery show и setTimeout, но она работает только при первой загрузке страницы

Это мой jquery:

<script>
$(document).ready(function(){
   setTimeout(function(){
       $('#myModal').modal('show');
   }, 2000);
});
</script>

Мой модал:

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

Я хочу, чтобы он открывался через каждые 5 секунд. Пожалуйста, помогите

2
juhi 26 Фев 2018 в 10:43

4 ответа

Лучший ответ

Попробуй это

setInterval(function () {
   $('#myModal').modal('show');
}, 5000);

Метод setInterval () будет продолжать вызывать функцию до вызова clearInterval () или до закрытия окна.

3
Chintan Joshi 18 Мар 2020 в 06:21

Вместо этого вы можете попробовать использовать рекурсивный setTimeout setInterval, потому что расписания setTimeout обеспечивают следующий вызов прямо в конце текущего.

Рекурсивный setTimeout является более гибким методом, чем setInterval. Таким образом, следующий вызов может быть запланирован по-разному, в зависимости от результатов текущего:

$(document).ready(function(){
   setTimeout(function showModal() {
      $('#myModal').modal('show');
      setTimeout(showModal, 5000);
    }, 5000);
});
1
Hanif 26 Фев 2018 в 08:07

Используйте setInterval и 5000, поскольку 2000 равно 2 секундам.

setInterval - это "повторять эту функцию каждые N миллисекунд". setTimeout - "выполнить эту функцию один раз через N миллисекунд"

setInterval(function () {
  console.log('Modal.show()');
}, 5000);
2
Justinas 26 Фев 2018 в 07:46

Попробуйте использовать 5000 внутри setInterval вместо 2000, поскольку 5000 это 5 секунд

0
nibedita panda 18 Мар 2020 в 06:29