civilTime eventLister中的isMilitaryTime变量拼写错误。最好使用一次interval,否则它调用的是setinterval的指数量。请试试这个。
如果我的帖子格式不好,请原谅。我到处找了找,似乎找不到解决这个问题的办法。我正在构建一个时钟应用程序,我有两个按钮,一个切换12小时时间,另一个切换24小时时间。24小时切换很好,但我无法切换回12小时。
let isMilitaryTime = false;
let militaryTime = document.getElementById('button24');
militaryTime.addEventListener('click', function () {
isMilitaryTime = true;
});
let civilTime = document.getElementById('button12');
civilTime.addEventListener('click', function () {
ismilitaryTime = false;
});
function normalTime() {
let date = new Date();
let hour = date.getHours();
let min = date.getMinutes();
let sec = date.getSeconds();
let amPm = hour >= 12 ? 'PM' : 'AM';
if (isMilitaryTime === true) {
setInterval(normalTime, 1000);
document.getElementById('clock').innerHTML = hour + ':' + min + ':' + sec;
} else {
amPm = hour >= 12 ? 'PM' : 'AM';
hour = hour % 12 || 12;
setInterval(normalTime, 1000);
document.getElementById('clock').innerHTML = hour + ':' + min + ':' + sec + ' ' + amPm;
}
min = min < 10 ? '0' + min : min;
sec = sec < 10 ? '0' + sec : sec;
}
'''
var isMilitaryTime = false;
let militaryTime = document.getElementById('button24');
militaryTime.addEventListener('click', function() { isMilitaryTime = true });
let civilTime = document.getElementById('button12');
civilTime.addEventListener('click', function() { isMilitaryTime = false });
function normalTime() {
let date = new Date();
let hour = date.getHours();
let min = date.getMinutes();
let sec = date.getSeconds();
let amPm = hour >=12 ? 'PM' : 'AM';
min = min < 10 ? '0' + min : min;
sec = sec < 10 ? '0' + sec : sec;
if(isMilitaryTime === true) {
document.getElementById("clock").innerHTML = hour + ':' + min + ':' + sec;
} else {
amPm = hour >= 12 ? 'PM' : 'AM'
hour = hour % 12 || 12;
document.getElementById("clock").innerHTML = hour + ':' + min + ':' + sec + ' ' + amPm;
}
}
setInterval(normalTime, 1000);
与其使用setInterval,不如像一样从eventLister本身调用nomalTime函数
let militaryTime = document.getElementById('button24');
militaryTime.addEventListener('click', function() { isMilitaryTime = true;
normalTime(); });
每次单击按钮时都必须调用normalTime
方法:
let isMilitaryTime = false;
let militaryTime = document.getElementById('button24');
militaryTime.addEventListener('click', function () {
isMilitaryTime = true;
normalTime();
});
let civilTime = document.getElementById('button12');
civilTime.addEventListener('click', function () {
ismilitaryTime = false;
normalTime();
});