задать спереду 0, если число таймера < 10
Помогите пожалуйста, у меня есть таймер но я не могу установить ноль когда у меня число меньше 10
HTML
<div id="countdown">
<span id="minute"></span> : <span id="second"></span>
</div>
<button id="start">start</button>
<button id="pause">pause</button>
<button id="reset">reset</button>
<div class="time-set">
<button id="add">add</button>
<button id="minus">minus</button>
</div>
JS
let startMinute = 1;
let startSecond = 0;
let minuteDisplay = document.querySelector("#minute");
let secondDisplay = document.querySelector("#second");
let startButton = document.querySelector("#start");
minuteDisplay.innerText = startMinute;
secondDisplay.innerText = startSecond;
let intervalId;
let onPause = () => {
clearInterval(intervalId);
startButton.innerText = "start";
startButton.onclick = () => onStart(parseInt(minuteDisplay.innerText), parseInt(secondDisplay.innerText));
}
document.querySelector("#pause").onclick = onPause;
let onStart = (startMinute, startSecond) => {
let remainingSec = startMinute * 60 + startSecond;
intervalId = setInterval(() => {
remainingSec--;
let remainingMinute = parseInt(remainingSec / 60);
let remainingSecond = parseInt(remainingSec % 60);
minuteDisplay.innerText = remainingMinute;
secondDisplay.innerText = remainingSecond || '00';
if (remainingSecond === 0 && remainingMinute === 0) {
clearInterval(intervalId);
}
if (remainingMinute <= 9) {
remainingMinute = `0` + remainingMinute;
}
if (remainingSecond <= 9) {
remainingSecond = '0' + remainingSecond;
}
}, 1000);
}
document.querySelector("#start").onclick = onStart;
startButton.onclick = () => onStart(startMinute, startSecond);
let onReset = () => {
clearInterval(intervalId);
minuteDisplay.innerText = startMinute;
secondDisplay.innerText = startSecond;
startButton.innerText = "start";
startButton.onclick = () => onStart(startMinute, startSecond);
}
document.querySelector("#reset").onclick = onReset;
вышеприведенный код не работает
Ответы (3 шт):
Автор решения: Vadim
→ Ссылка
Видимо речь идет про это?
let x;
x = '11';
x = x.padStart(2, '0');
console.log(x);
x = 9;
x = (x+'').padStart(2, '0');
console.log(x);
Там на npm есть пакет, который быстрее стандарта работает...
Btw, для одного знака лучше так:
let x = 3;
if(x < 10)x = `0${x}`;
console.log(x);
Автор решения: andreycrane
→ Ссылка
Примерно таким образом вы можете организовать форматирование секунд в коде
document.addEventListener('DOMContentLoaded', function() {
const outputEl = document.querySelector('#output');
function printTime(time) {
outputEl.innerText = time < 10 ? `0${time}`: time;
}
let time = 15;
let interval = setInterval(() => {
printTime(time--);
if(time < 0) clearInterval(interval);
}, 1000);
})
<div id="output">
</div>
let startMinute = 1;
let startSecond = 0;
let minuteDisplay = document.querySelector("#minute");
let secondDisplay = document.querySelector("#second");
let startButton = document.querySelector("#start");
minuteDisplay.innerText = startMinute;
secondDisplay.innerText = startSecond;
let intervalId;
let onPause = () => {
clearInterval(intervalId);
startButton.innerText = "start";
startButton.onclick = () => onStart(parseInt(minuteDisplay.innerText), parseInt(secondDisplay.innerText));
}
document.querySelector("#pause").onclick = onPause;
let onStart = (startMinute, startSecond) => {
let remainingSec = startMinute * 60 + startSecond;
intervalId = setInterval(() => {
remainingSec--;
let remainingMinute = parseInt(remainingSec / 60);
let remainingSecond = parseInt(remainingSec % 60);
if (remainingMinute <= 9) {
remainingMinute = `0` + remainingMinute;
}
if (remainingSecond <= 9) {
remainingSecond = '0' + remainingSecond;
}
minuteDisplay.innerText = remainingMinute;
secondDisplay.innerText = remainingSecond || '00';
if (remainingSecond === 0 && remainingMinute === 0) {
clearInterval(intervalId);
}
}, 1000);
}
document.querySelector("#start").onclick = onStart;
startButton.onclick = () => onStart(startMinute, startSecond);
let onReset = () => {
clearInterval(intervalId);
minuteDisplay.innerText = startMinute;
secondDisplay.innerText = startSecond;
startButton.innerText = "start";
startButton.onclick = () => onStart(startMinute, startSecond);
}
document.querySelector("#reset").onclick = onReset;
<div id="countdown">
<span id="minute"></span> : <span id="second"></span>
</div>
<button id="start">start</button>
<button id="pause">pause</button>
<button id="reset">reset</button>
<div class="time-set">
<button id="add">add</button>
<button id="minus">minus</button>
</div>
Исправил ваш код. У вас проверки для форматирования выполняются после того, как произошел вывод значения в html
Автор решения: Vadim
→ Ссылка
const minuteDisplay = document.querySelector('#minute');
const secondDisplay = document.querySelector('#second');
const startButton = document.querySelector('#start');
let timerInterval;
minuteDisplay.innerText = '01';
secondDisplay.innerText = '00';
const doStart=(startMinute=1, startSecond=0)=>{
let remainingSec = startMinute * 60 + startSecond;
timerInterval = setInterval(()=>{
remainingSec--;
let remainingMinute = (remainingSec / 60) | 0;
let remainingSecond = (remainingSec % 60) | 0;
if(remainingSecond === 0 && remainingMinute === 0)clearInterval(timerInterval);
if(remainingMinute < 10)remainingMinute = `0${remainingMinute}`;
if(remainingSecond < 10)remainingSecond = `0${remainingSecond}`;
minuteDisplay.innerText = remainingMinute || 00;
secondDisplay.innerText = remainingSecond || 00;
}, 1000);
};
document.querySelector('#reset').onclick=()=>{
clearInterval(timerInterval);
minuteDisplay.innerText = '01';
secondDisplay.innerText = '00';
startButton.innerText = 'start';
startButton.onclick=()=>doStart();
};
document.querySelector('#pause').onclick=()=>{
clearInterval(timerInterval);
startButton.innerText = 'start';
startButton.onclick=()=>doStart(parseInt(minuteDisplay.innerText), parseInt(secondDisplay.innerText));
};
startButton.onclick=()=>doStart();
