Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2018, 22:21
Интересующийся
Отправить личное сообщение для mishapod Посмотреть профиль Найти все сообщения от mishapod
 
Регистрация: 01.02.2017
Сообщений: 20

Помощь с setInterval и setTimeout. "Карусель"
Проблема такая, при запуске интервала он стартует почти как надо.
Я хочу поставил кнопку для паузы интервала, но работает не так как надо в чем проблема? + (при загрузке страницы,надо чтоб интервал сразу стартовал). Я написал это но не знаю грамотно или нет.

Прошу код не менять, если нет большой необходимости. Если код поменяли, пожалуйста прокомментируйте. Только на JS

https://jsfiddle.net/nx8qvepq/2/
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2018, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

mishapod,
JS-Анимация
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2018, 23:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

mishapod,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .div {
    width: 150px;
    height: 30px;
    background-color: red;
    float: left;
    margin-right: 2px;
    margin-bottom:10px;
    margin-top:10px;
}

button {
  width: 100px;
  height: 40px;
}
  </style>

  <script>
window.addEventListener('DOMContentLoaded', function() {

(function(){
  var elem, startInterval, widthBlock,
    btn1 = document.getElementById('click1'),
    btn2 = document.getElementById('click2'),
    collectionBlocks = document.getElementById('collection_divs');

  function clear()
  {
      window.clearTimeout(startInterval)
  }

  function minWidth(){
    clear();
    elem = collectionBlocks.children[0];
    widthBlock = elem.clientWidth;
    widthBlock -= 2;
    if (widthBlock > 0) {
    elem.style.width = widthBlock + 'px';
    startInterval = setTimeout(minWidth, 30)
    }
    else {
    collectionBlocks.appendChild(elem);
    elem.style.width = '150px';
    startInterval = setTimeout(minWidth, 3000)
    }
  }
  minWidth()

  btn2.onclick = minWidth
  btn1.onclick = clear
})();
    });
  </script>
</head>

<body>
<button id="click1">stop</button>
<button id="click2">start</button>

<div id="collection_divs">
    <div class="div">1</div>
    <div class="div">2</div>
    <div class="div">3</div>
  </div>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2018, 00:08
Интересующийся
Отправить личное сообщение для mishapod Посмотреть профиль Найти все сообщения от mishapod
 
Регистрация: 01.02.2017
Сообщений: 20

Спасибо, если не сложно, можете сказать где была проблема?
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2018, 00:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от mishapod
можете сказать где была проблема?
лучше никогда не использовать setInterval
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по setTimeout CraftLawrence Events/DOM/Window 3 27.07.2015 21:33
setTimeout и setInterval срабатывают без задержки! ПОЧЕМУ? shureg Общие вопросы Javascript 1 12.05.2011 09:06
setTimeout setInterval и др. mycoding Общие вопросы Javascript 6 28.10.2010 17:26
Еще один вопрос по setTimeout setInterval Хранитель Света Общие вопросы Javascript 5 12.03.2009 22:37
Очень простой как даже по мне вопрос по поводу setTimeout & setInterval Хранитель Света Общие вопросы Javascript 5 12.07.2008 20:34