【发布时间】:2014-01-24 18:25:41
【问题描述】:
它在 JSFiddle 中有效,但在我的代码中,innerHTML 调用不起作用,因为它似乎找不到指定的 ID。但我可以在页面上清楚地看到它。
代码用于倒数计时器。代码如下:
<script>
// set the date we're counting down to
var target_date = new Date("Aug 15, 2019").getTime();
// variables for time units
var days, hours, minutes, seconds;
// get tag element
var countdownOpening = document.getElementById("countdownOpening");
// update the tag with id "countdownOpening" every 1 second
setInterval(function () {
// find the amount of "seconds" between now and target
var current_date = new Date().getTime();
var seconds_left = (target_date - current_date) / 1000;
// do some time calculations
days = parseInt(seconds_left / 86400);
seconds_left = seconds_left % 86400;
hours = parseInt(seconds_left / 3600);
seconds_left = seconds_left % 3600;
minutes = parseInt(seconds_left / 60);
seconds = parseInt(seconds_left % 60);
// format countdown string + set tag value
countdownOpening.innerHTML = days + "d, " + hours + "h, "
+ minutes + "m, " + seconds + "s";
}, 1000);
</script>
控制台中的错误似乎直到调用 .innerHTML 时才出现,所以我认为其余的工作正常。
countdownOpening.innerHTML = days + "d, " + hours + "h, "
+ minutes + "m, " + seconds + "s";
这是页面上的 ID:
<span id="countdownOpening"></span>
我不明白为什么在查找该元素时遇到问题。
Uncaught TypeError: Cannot set property 'innerHTML' of null index.html:39
(anonymous function)
并且错误每秒计数一次,所以我认为它在倒计时方面有效,但无法更新跨度。
Live link: 用户名是 admin 密码是 gogogo
【问题讨论】:
-
将
console.log(countdownOpening);添加到您的 setInterval 中,您的 setInterval 中似乎由于某种原因没有该变量,因此必须将其删除或取消设置或其他地方。 -
@Steven 我尝试了控制台但一无所获。尝试了一个警报,它拉回了空值。但是 var 应该是全局的?