Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.01.2018, 07:57
Новичок на форуме
Отправить личное сообщение для Konor Посмотреть профиль Найти все сообщения от Konor
 
Регистрация: 02.01.2018
Сообщений: 7

Помощь с таймером
Есть в HTML простая строка:
<div id="time">
    Таймер: <span id="day">0</span> : <span id='hour'>0</span> : <span id="min">0</span> : <span id="sec">0</span>
</div>


И JavaScript (скрипт не закончен):
var timeA = [5, 59, 23, 3];
var htmlTime = [document.getElementById('sec'), document.getElementById('min'), document.getElementById('hour'), document.getElementById('day')];

htmlTime[0].innerHTML = timeA[0];
htmlTime[1].innerHTML = timeA[1];
htmlTime[2].innerHTML = timeA[2];
htmlTime[3].innerHTML = timeA[3];

function time(){
    htmlTime[0].innerHTML = timeA[0];
    timeA[0]--;
    
    if (timeA[0] == 0){
        timeA[1]--;
        htmlTime[1].innerHTML = timeA[1];
        timeA[0] = 5;
    }
}

setInterval(time, 1000);


Почему-то счётчик минут декрементирует, когда остаётся ещё одна секунда, а нужно чтобы это происходило одновременно с восполнением счётчика секунд. Как исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2018, 08:18
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

if (timeA[0] == -1)
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2018, 08:35
Новичок на форуме
Отправить личное сообщение для Konor Посмотреть профиль Найти все сообщения от Konor
 
Регистрация: 02.01.2018
Сообщений: 7

Тогда с 1 перескакивает на -1 вместо 0
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2018, 09:08
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

строку:
htmlTime[0].innerHTML = timeA[0];
перенесите вконец ф-ии
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2018, 11:23
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

может проще объект Date использовать, пусть сам считает?

<div id="time">
    Таймер: <span id="day">0</span> : <span id='hour'>0</span> : <span id="min">0</span> : <span id="sec">0</span>
</div>
  
<script>
    var d = new Date(2018, 0, 3, 23, 59, 5),
      htmlTime = [document.getElementById('sec'), document.getElementById('min'), document.getElementById('hour'), document.getElementById('day')];

    function time(){
       htmlTime[3].innerHTML = d.getDate();
       htmlTime[2].innerHTML = d.getHours();
       htmlTime[1].innerHTML = d.getMinutes();
       htmlTime[0].innerHTML = d.getSeconds();
       d = new Date(d - 1000); // вычитаем 1000 милисекунд
    }

    time();
    setInterval(time, 1000);
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2018, 12:22
Новичок на форуме
Отправить личное сообщение для Konor Посмотреть профиль Найти все сообщения от Konor
 
Регистрация: 02.01.2018
Сообщений: 7

Проще, спасибо за подсказку. Я просто ещё не изучал объект Date
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2018, 12:33
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

начните здесь https://learn.javascript.ru/datetime
Ответить с цитированием
  #8 (permalink)  
Старый 25.01.2018, 18:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Konor Посмотреть сообщение
Тогда с 1 перескакивает на -1 вместо 0
нет, где что перескакивает?
<div id="time">
    Таймер: <span id="day">0</span> : <span id='hour'>0</span> : <span id="min">0</span> : <span id="sec">0</span>
</div>


<script>
var timeA = [5, 59, 23, 3];
var htmlTime = [document.getElementById('sec'), document.getElementById('min'), document.getElementById('hour'), document.getElementById('day')];

htmlTime[0].innerHTML = timeA[0];
htmlTime[1].innerHTML = timeA[1];
htmlTime[2].innerHTML = timeA[2];
htmlTime[3].innerHTML = timeA[3];

function time(){
    htmlTime[0].innerHTML = timeA[0];
    timeA[0]--;
    
    if (timeA[0] == -1){
        timeA[1]--;
        htmlTime[1].innerHTML = timeA[1];
        timeA[0] = 5;
    }
}

setInterval(time, 1000);
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 26.01.2018, 12:08
Новичок на форуме
Отправить личное сообщение для Konor Посмотреть профиль Найти все сообщения от Konor
 
Регистрация: 02.01.2018
Сообщений: 7

А как можно реализовать привязку, чтобы при обновлении страницы таймер не сбрасывался?
Ответить с цитированием
  #10 (permalink)  
Старый 26.01.2018, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Konor,
https://javascript.ru/forum/misc/256...tml#post156853
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с таймером Konor Общие вопросы Javascript 2 03.01.2018 17:43
Требуется помощь с прошивкой баннеров HTML5 Canvas kambodge Работа 0 08.07.2016 13:55
помощь по jquerry анимации rev27 Элементы интерфейса 6 23.04.2014 03:06
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17