问题是,每次我想在Chrome中运行它时,都会弹出错误消息。每次更改的天/小时/分钟应变为红色。
// Set the date we're counting down to
var countDownDate = new Date("Nov 30, 2018 15:50:25").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now and the count down date
var distance = countDownDate - now;
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Blink
if (seconds == 59){
document.getElementById("minutes").style.color = 'red';
if(minutes == 59){
document.getElementById("hours").style.color = 'red';
if(hour == 24){
document.getElementById("days").style.color = 'red';
}
}
}
else{
document.getElementById("minutes").style.color = 'black';
document.getElementById("hours").style.color = 'black';
document.getElementById("days").style.color = 'black';
}
// Delete Day, Hour and Minute Timer if they are 0
if (days !== 0 && hours !== 0 && minutes !== 0 && seconds !== 0){
document.getElementById("time").innerHTML = "Noch " + days + " Tage " + hours + " Stunden "
+ minutes + " Minuten und " + seconds + " Sekunden bis zur Fertigstellung des Spiels";
if (days === 0){
document.getElementById("time").innerHTML = "Noch " + hours + " Stunden "
+ minutes + " Minuten und " + seconds + " Sekunden bis zur Fertigstellung des Spiels";
if (hours === 0){
document.getElementById("time").innerHTML = "Noch " + minutes + " Minuten und " + seconds + " Sekunden bis zur Fertigstellung des Spiels";
if (minutes === 0){
document.getElementById("time").innerHTML = "Noch " + seconds + " Sekunden bis zur Fertigstellung des Spiels";
}
}
}
}
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("time").innerHTML = "Zu Ende";
}
// show hidden content if days / 3 = mod 0
if (days % 3 !== 0){
document.getElementById("special").style.visibility = 'hidden';
}
}, 1000);
答案 0 :(得分:0)
我可以在这里看到两个问题。
首先,您正在尝试将getElementById
与似乎还不存在的元素(“分钟”,“小时”,“天”)一起使用。具有这些ID的元素必须先存在于DOM中,然后才能使用getElementById
方法进行访问。
解决此问题的一种方法是将当前变量包装在<span>
标记中,并为每个变量赋予一个唯一的ID,以便以后使用。
var daysElement = `<span id="days">${days}</span>`,
hoursElement = `<span id="hours">${hours}</span>`,
minutesElement = `<span id="minutes">${minutes}</span>`,
secondsElement = `<span id="seconds">${days}</span>`;
现在,如果将这些元素添加到“时间”元素的innerHTML
中(而不仅仅是数字本身),则可以定位其ID,然后更改其样式。
document.getElementById("time").innerHTML = "Noch "
+ hoursElement + " Stunden " + minutesElement + " Minuten und "
+ secondsElement + " Sekunden bis zur Fertigstellung des Spiels";
最后,您需要确保操作顺序正确。将以下代码移到更改“时间”的innerHTML
的部分的下方,以使元素在尝试更改其样式属性之前存在于DOM中。
if (seconds == 59){
document.getElementById("minutes").style.color = 'red';
if(minutes == 59){
document.getElementById("hours").style.color = 'red';
if(hour == 24){
document.getElementById("days").style.color = 'red';
}
}
}
else{
document.getElementById("minutes").style.color = 'black';
document.getElementById("hours").style.color = 'black';
document.getElementById("days").style.color = 'black';
}
答案 1 :(得分:-1)
似乎不是JS的问题。 无法读取null的属性样式,表示您尝试访问的对象的样式属性为null。 请检查您正在使用的所有document.getElementById api,这些元素在html元素中(在代码中使用的)具有正确的ID。
也请使用document.getElementById api在浏览器控制台中访问该元素。
如果是加载问题,请在body标签的末尾添加脚本,以便加载元素。
然后,如果未解决,则将调试器添加到js行中,并检查为什么该元素不可用。