Я пытаюсь создать выскочку таймера из определенного значения
JS-код
<script type = "text/javascript">
var minutesLabel = document.getElementById("minutes");
var secondsLabel = document.getElementById("seconds");
var totalSeconds = 0;
setInterval(setTime, 1000);
function setTime() {
++totalSeconds;
secondsLabel.innerHTML = pad(totalSeconds % 60);
minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
}
else {
return valString;
}
}
</script>
HTML-код
<asp:Label ID = "minutes" runat = "server" Text = "00"></asp:Label>:<asp:Label ID = "seconds" runat = "server" Text = "00"></asp:Label>
Консоль ошибок и продолжайте печатать каждую 1 секунду
Uncaught TypeError: secondLabel имеет значение null setTime https://localhost:44340/посещаемость:30
В скрипте нет ничего плохого, похоже, он по какой-то причине не находит ваши html-элементы. Должно быть что-то еще, потому что следующий скрипт отлично работает в моем браузере как обычный html-файл:
<body>
<asp:Label ID = "minutes" runat = "server" Text = "00"></asp:Label>:<asp:Label ID = "seconds" runat = "server" Text = "00"></asp:Label>
<script type = "text/javascript">
var minutesLabel = document.getElementById("minutes");
var secondsLabel = document.getElementById("seconds");
var totalSeconds = 0;
setInterval(setTime, 1000);
function setTime() {
++totalSeconds;
secondsLabel.innerHTML = pad(totalSeconds % 60);
minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
}
else {
return valString;
}
}
</script>
</body>
Может быть, вы могли бы попробовать поменять местами теги с обычными и посмотреть, исчезнет ли проблема (извините, я не знаю ASP и влияет ли это на ваш пример).
о, это мое плохо, потому что я новичок, но JS до меток я делал как у, и это работает еще один вопрос. Могу ли я остановить счет и начать счет в зависимости от состояния кнопки Active или директивы?
теперь у меня другая проблема, когда я позволяю ему начать с 18:54, он продолжает добавлять 1 секунду до 59, затем должен добавить 1 минуту до 18, но это не работает для меня, он сохраняет установленное значение 18, затем сбрасывает минуты
Вы можете делать в Javascript все, что хотите :) Например, если вы оставляете свой код как есть, вставьте <button id = "btn">Start / Sttop</button>
в тело документа. Затем в начале скрипта вы можете добавить let btnEnabled = true; document.querySelector('#btn').onclick = () => btnEnabled = !btnEnabled;
И в свою setInterval
функцию обратного вызова if (btnEnabled) {++totalSeconds};
. Но это не то место, где можно просить людей написать для вас код. Я призываю вас изучить основы Javascript, очень хорошее место для этого здесь developer.mozilla.org/en-US/docs/Web/JavaScript.
Что касается сброса счетчика, это может быть связано с факторами, не указанными в вашем посте. У меня скрипт работает нормально, 20 минут и больше.
Скрипт может немного запаздывать для обновления счетчика, если у него есть какая-то другая работа, поэтому, если вам нужно, чтобы он показывал точные секунды даже по прошествии длительного периода времени, вы можете начать с получения метки времени
let startTime = Date.now()
в начале скрипта и изменитьsetInterval
обратный вызов для отображения разницы во времени между началом и сейчас.function settime() { let totalSeconds = ( Date.now() - startTime) / 1000; /* rest of the function stays the same */ }