我是HTML和JavaScript的新手,正在尝试以下代码。

<!DOCTYPE html>
<html>
<head>
<script>
function displayTime() {
    var elem = document.getElementById("clock");
    var now = new Date();
    if(elem == null) alert("NO clock element");
    elem.innerHTML = now.toLocaleString();
    setTimeout(displayTime, 1000);
}
window.onload = displayTime();

</script>
</head>
<body>
<h1>Digital Clock</h1>
<span id="clock"></span>
</body>
</html>


在上面的代码中,我试图使用span元素实现数字时钟,并每1秒更新一次时间。
但是我看到的是span元素上的getElementById总是返回null,无法设置它。
我的目的不是实现时钟,而是学习JavaScript。
请帮我在这里我做错了吗?

最佳答案

问题:window.onload = displayTime();

您将函数displayTime的返回值保存在window.onload中,并且在加载窗口时,无论该窗口如何运行。但是displayTime返回null。您不能运行null。

您要查找的是window.onload = displayTime;,因为您希望displayTime在窗口加载时运行。

并且由于您要立即调用displayTime(在加载窗口之前),因此跨度尚不存在。

09-16 17:26