【发布时间】:2022-12-11 17:10:23
【问题描述】:
我正在尝试计时,但屏幕上似乎不想显示天数
HTML
<div class="countup" id="countup1">
<div class="yrs"><span class="timeel years">00</span><span class="countupYrs">YRS</span></div> |
<div class="days"><span class="timeel days">00</span><span class="countupDays">DAYS</span></div> |
<div class="hrs"><span class="timeel hours">00</span><span class="countupHrs">HRS</span></div> |
<div class="mins"><span class="timeel minutes">00</span><span class="countupMins">MINS</span></div> |
<div class="secs"><span class="timeel seconds">00</span><span class="countupSecs">SECS</span></div>
</div>
JS
window.onload = function () {
countUpFromTime("Dec 25, 2021 13:20:00", 'countup1');
};
function countUpFromTime(countFrom, id) {
countFrom = new Date(countFrom).getTime();
var now = new Date(),
countFrom = new Date(countFrom),
timeDifference = (now - countFrom);
var secondsInADay = 60 * 60 * 1000 * 24,
secondsInAHour = 60 * 60 * 1000;
days = Math.floor(timeDifference / (secondsInADay) * 1);
years = Math.floor(days / 365);
if (years > 1) { days = days - (years * 365) }
hours = Math.floor((timeDifference % (secondsInADay)) / (secondsInAHour) * 1);
mins = Math.floor(((timeDifference % (secondsInADay)) % (secondsInAHour)) / (60 * 1000) * 1);
secs = Math.floor((((timeDifference % (secondsInADay)) % (secondsInAHour)) % (60 * 1000)) / 1000 * 1);
var idEl = document.getElementById(id);
idEl.getElementsByClassName('years')[0].innerHTML = years;
idEl.getElementsByClassName('days')[0].innerHTML = days;
idEl.getElementsByClassName('hours')[0].innerHTML = hours;
idEl.getElementsByClassName('minutes')[0].innerHTML = mins;
idEl.getElementsByClassName('seconds')[0].innerHTML = secs;
clearTimeout(countUpFromTime.interval);
countUpFromTime.interval = setTimeout(function () { countUpFromTime(countFrom, id); }, 1000);
}
我试过做
<div class="days"><span class="timeel days">00</span><span id="countupDays" class="countupDays">DAYS</span></div>
JS
document.getElementById('countupDays').innerHTML = "DAYS";
添加“天”这个词,但这没有用,因为计时器会停止计数
【问题讨论】:
-
您的所有元素都没有 ID
element,因此您的尝试不会找到任何要更新的元素。您要更新哪个元素? -
@mykaf 我用它作为例子,意识到人们会感到困惑,现在更新了
-
你有两个元素 class="days":
<div class="days"><span class="timeel days">00</span><span class="countupDays">DAYS</span></div>;第一个是你的目标元素的容器,所以它的 innerHTML 正在更新而不是“.timeel.days” -
仅供参考:
idEl.getElementsByClassName('years')[0].innerHTML不是好的代码有两个原因。 1)getElementsByClassName()should be avoided(特别是如果您实际上对获取节点列表不感兴趣)和 2).innerHTMLshould be avoided(如果可能)出于性能和安全考虑(改用.textContent)。
标签: javascript html