Есть три кнопки. По нажатию на первую кнопку запускается первый секундомер, по нажатию на вторую останавливается первый и запускается второй секундомер, а по нажатию на третью кнопку останавливается второй секундомер и выводится сумма секунд первого и второго секундомера. Никак не могу понять, почему в консоли выводится 0.
let button1 = document.getElementById('first');
let button2 = document.getElementById('second');
let button3 = document.getElementById('end');
let time1 = {
sec1: 0,
timer1: null,
};
let time2 = {
sec2: 0,
timer2: null,
};
function yourTime(time, yourSec, yourTimer) {//функция подсчёта времени
function tickTimer() {
++time.yourSec;
}
time.yourTimer = setInterval(tickTimer, 1000);
}
button1.addEventListener('click', function () {
yourTime(time1, time1.sec1, time1.timer1);
console.log('первая запись пошла');
});
button2.addEventListener('click', function () {
clearInterval(time1.timer1);
yourTime(time2, time2.sec2, time2.timer2);
console.log('остановка первой, вторая запись пошла');
});
button3.addEventListener('click', function () {
clearInterval(time2.timer2);
let sec = time1.sec1 + time2.sec2;
console.log('результат:'+sec);
});
<button id="first">1</button>
<button id="second">2</button>
<button id="end">3</button>
В исправленных местах добавлены комментарии:
let button1 = document.getElementById('first');
let button2 = document.getElementById('second');
let button3 = document.getElementById('end');
let time1 = {
sec1: 0,
timer1: null,
};
let time2 = {
sec2: 0,
timer2: null,
};
function yourTime(time, yourSec, yourTimer) {
function tickTimer() {
++time[yourSec];
// если ключ является переменной, запись с точкой не прокатит - нужны [скобки]
}
time[yourTimer] = setInterval(tickTimer, 1000);
}
button1.addEventListener('click', function () {
yourTime(time1, 'sec1', 'timer1');
// В качесвтве параметров - сами ключи в виде строк, а не ЗНАЧЕНИЕ ключа time1.sec1
console.log('первая запись пошла');
});
button2.addEventListener('click', function () {
clearInterval(time1.timer1);
yourTime(time2, 'sec2', 'timer2');
console.log('остановка первой, вторая запись пошла');
});
button3.addEventListener('click', function () {
clearInterval(time2.timer2);
let sec = time1.sec1 + time2.sec2;
console.log('результат:'+sec);
});
<button id="first">1</button>
<button id="second">2</button>
<button id="end">3</button>
P.s. могут быть интересные сюрпризы, если не использовать getElementById или querySelector('#')... т.к. в таком случае создается глобальная переменная с таким названием))
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Создаю массив из массивов данных полученного из CSV файлаПри обращении к конкретному массиву по индексу выводит "undefined"
На странице реализована возможность сохранения настроекНа форме присутствует 3 поля
Есть два компонента и нужно чтобы они оба рендерились по одному путиКомпонент PostWrap будет меняться а компонент People будет меняться редко
Хочу отправить значение data_state = false на сервер после клика на картинкуКод скрипта: