Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 5

Таймер обратного отсчета

11.04.2018, 12:42. Показов 2135. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Мне нужно сделать таймер обратного отсчета именно на классах в JS. Я написал код, но есть проблема, по нажатию кнопки старт таймер по просту не идет. Думаю ошибка в вызове функции t(), в setInterval (но это не точно). В поле input надо вписывать минуты, но вторая проблема: переменная m не принимает значения input. Буду благодарен за помощь

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class Timer {
    constructor(){
        this.m = +document.getElementById("minutes").value;
        this.s = 0;
        this.status = 0; 
        this.timerId;
    }
    
    t(){
        this.s--;
        
        if(this.s < 0) {
            this.s = 59;
            this.m--;
        }
        
        if(this.m < 0) {
            this.m = 59;
        } 
        
        if(this.s + this.m == 0) resetTimer();  
        
        this.s = this.s + "";
        this.m = this.m + "";
        
        if (this.s.length < 2) {
            this.s = "0" + this.s;
        }
        
        if (this.m.length < 2) {
            this.m = "0" + this.m;
        }
        
        document.getElementById('tm').innerHTML = this.m + ":" + this.s; 
    }    
       
    resetTimer(){             
            clearInterval(this.timerId);
            
            document.getElementById('tm').innerHTML = '00' + ':' + '00';
            document.getElementById("minutes").value = "";
            document.getElementById("minutes").removeAttribute("disabled","");
            
            this.status = 0;
        }
        
    check() {
        if( this.s + this.m == 0){
            this.s = 0;
            this.m = 0;
        }
        
        this.timerId = setInterval(this.t(), 1000);
    } 
        
    start(){   
        document.getElementById("minutes").setAttribute("disabled","");
          
        if(!this.status){
            this.status = 1;
            this.check();
        }
    }
}
 
var timer = new Timer();
Вот код HTML
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
    <head>
        <title>Timer</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="newcss.css"> 
        <link rel="shortcut icon" href="#">
    </head>
    <body>
         
            <div id="tm">00:00</div>
            <label>Write minutes</label><br>
            <input type="number" id="minutes">
            <script type="text/javascript" src="newjavascript.js"></script>
            <input type="button" value="Start" onclick="timer.start()">
            <input type="button" value="Reset"  onclick="timer.resetTimer()">
            
    </body>
</html>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2018, 12:42
Ответы с готовыми решениями:

Таймер обратного отсчета
Подскажите хороший скрипт таймера обратного отсчета. Можно и на jq. Добавлено через 41 минуту Нашёл хороший, но скрипт на один...

Таймер обратного отсчета
Ребята помогите пожалуйста. Я совсем новичок. Нужно отредактировать таймер обратного времени и поменять несколько картинок на сайте...

Таймер обратного отсчета
Есть у кого-нибудь готовый или кто-то может написать, если не муторно счетчик обратного отсчета, единственное он должен быть циклическим,...

2
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
11.04.2018, 16:27
Ну как-то так.

HTML5
1
2
<x-timer id="timer"></x-timer><br />
<input id="minutes" type="number" />minutes. <button id="setup">Setup!</button>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Timer extends HTMLElement {
  constructor( ) {
    super();
    
    let shadow = this.attachShadow({ mode: 'open' });
    this.data = document.createElement('span');
    this.data.setAttribute('class', 'timer');
    this.data.appendChild(document.createTextNode('00:00'));
    
    shadow.appendChild(this.data);
    
    this.timer = null;
  }
  
  stop( ) {
    if (this.timer !== null) {
      clearInterval(this.timer);
      this.timer = null;
    }
  }
  
  setup(seconds) {
    this.stop( );
    
    this.remaining = seconds;
    this.timer = setInterval(this.tick.bind(this), 1000);
    this.render();
  }
  
  render( ) {
    let minutes = Math.floor(this.remaining / 60).toString();
    let seconds = (this.remaining % 60).toString();
    
    if (minutes.length < 2) minutes = `0${minutes}`;
    if (seconds.length < 2) seconds = `0${seconds}`;
    
    for (let child of this.data.childNodes)
      this.data.removeChild(child);
    
    this.data.appendChild(document.createTextNode(`${minutes}:${seconds}`));
  }
  
  tick( ) {
    this.remaining -= 1;
    this.render();
    if (this.remaining <= 0) {
      this.stop();
      this.dispatchEvent(new Event('timeup'));
    }
  }
}
 
customElements.define('x-timer', Timer);
 
// -------------
 
document.querySelector('#setup').addEventListener('click', () => {
  document.querySelector('#timer').setup(parseInt(document.querySelector('#minutes').value) * 60);
}, true); 
 
document.querySelector('#timer').addEventListener('timeup', () => alert('Time is up!'));
https://codepen.io/eva-rosalene/pen/MVxPrW
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
11.04.2018, 17:14
Не вижу особого смысла усложнять использованием шадоу дома. Я бы сделал так https://codepen.io/anon/pen/KoEbPv?editors=1010

HTML5
1
2
3
4
5
6
7
8
9
10
11
<p>Left: 
  <span id="secondsLeft">0</span> 
  seconds
</p>
 
<label for="seconds">
  Seconds:
  <input id="seconds" type="number"/>
</label>
 
<button id="setup">Start!</button>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Timer {
  constructor() {
    this.inputEl = document.getElementById('seconds')
    this.outputEl = document.getElementById('secondsLeft');
    this.secondsLeft = 0;
    this.timer = null;
  }
  
  start(){
    this.secondsLeft = Number(this.inputEl.value);
    this.outputEl.innerText = this.secondsLeft;
    this.inputEl.value = '';
    clearInterval(this.timer);
    
    this.timer = setInterval(() => this.tick(), 1000)
  }
 
  tick(){
    this.outputEl.innerText = --this.secondsLeft;
    if (this.secondsLeft <= 0){
      clearInterval(this.timer);
      console.log('Timer Passed!')
    }
  }
}
  
const timer = new Timer();
 
document.getElementById('setup').onclick = () => timer.start();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2018, 17:14
Помогаю со студенческими работами здесь

Таймер обратного отсчета
Доброе время суток. Нашел на сайт Таймер обратного отсчета времени. Меня он не устраивает тем, что я не могу изменить размер или не допираю...

таймер обратного отсчета
привет всем....помогите с таймером обратного отсчета до определенной даты, пожалуйста.

Таймер обратного отсчета
Здравствуйте друзья! Подскажите пожалуйста, в чем проблема. Есть небольшой скрипт, который считает секунды от десяти до нуля. Мне нужно,...

Таймер обратного отсчета
Здравствуйте. Пожалуйста можете скинуть скрипт, или ссылку на сайт, где есть таймер в котором можно задать допустим 10 часов, и он бы...

Таймер обратного отсчета на JS
Добрый день! Хочу сделать таймер обратного отсчета. Время выбирается из select. Написал такой код, но он не работает, подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru