#javascript
#javascript
Вопрос:
Я несколько раз запускал код, пытаясь исправить любую ошибку, которую я нашел в коде, но, похоже, это просто не работает.
Я использую цикл setInterval(). Функция даже не запускается один раз. В чем может быть проблема?
function stopWatch () {
var hours = Number(document.getElementById('hours').innerHTML);
var minutes = Number(document.getElementById('minutes').innerHTML);
var seconds = Number(document.getElementById('seconds').innerHTML);
if (seconds<60) {
seconds
} else {
seconds = 0;
minutes
}
if (minutes == 60) {
minutes = 0;
hours
}
if (seconds.length==2) {
document.getElementById('seconds').innerHTML = seconds;
} else {
document.getElementById('seconds').innerHTML = '0' seconds;
}
if (minutes.length==2) {
document.getElementById('minutes').innerHTML = minutes;
} else {
document.getElementById('minutes').innerHTML = '0' minutes;
}
if (hours.length==2) {
document.getElementById('hours').innerHTML = hours;
}
if (hours.length==1) {
document.getElementById('hours').innerHTML = '0' hours;
}
}
setInterval(stopWatch,1000)
<html>
<head></head>
<body>
<p>
<span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span>
</p>
</body>
</html>
Комментарии:
1. Ваш код выполняется только один раз. Вам нужно использовать цикл с некоторым описанием.
Ответ №1:
Ваш код выполняется только один раз. Вам нужно использовать цикл с некоторым описанием.
Есть много способов сделать это. Простым примером может быть использование setInterval
для вызова внутренних элементов вашей функции каждую секунду.
У вас также есть ошибка в вашей логике. Вы не должны проверять длину number ( seconds.length==2
) . Вы должны проверить, больше ли число, чем 9
( seconds > 9
):
function stopWatch() {
setInterval(function() {
var hours = Number(document.getElementById('hours').innerHTML);
var minutes = Number(document.getElementById('minutes').innerHTML);
var seconds = Number(document.getElementById('seconds').innerHTML);
if (seconds < 60) {
seconds
} else {
seconds = 0;
minutes
}
if (minutes == 60) {
minutes = 0;
hours
}
if (seconds > 9) {
document.getElementById('seconds').innerHTML = seconds;
} else {
document.getElementById('seconds').innerHTML = '0' seconds;
}
if (minutes > 9) {
document.getElementById('minutes').innerHTML = minutes;
} else {
document.getElementById('minutes').innerHTML = '0' minutes;
}
if (hours > 9) {
document.getElementById('hours').innerHTML = hours;
} else {
document.getElementById('hours').innerHTML = '0' hours;
}
}, 1000);
}
stopWatch()
<html>
<head></head>
<body>
<p>
<span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span>
</p>
</body>
</html>
Ответ №2:
Вы имеете в виду, почему секундомер не работает? Вы должны обернуть его в setInteraval, чтобы он обновлялся каждую секунду:
setInterval(function() {
stopWatch()
},1000);