Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用';getElementById';在';span';HTML元素_Javascript_Html - Fatal编程技术网

Javascript 无法使用';getElementById';在';span';HTML元素

Javascript 无法使用';getElementById';在';span';HTML元素,javascript,html,Javascript,Html,我不熟悉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.i

我不熟悉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>

函数displayTime(){
var elem=document.getElementById(“时钟”);
var now=新日期();
如果(elem==null)警报(“无时钟元素”);
elem.innerHTML=now.toLocaleString();
设置超时(显示时间,1000);
}
window.onload=displayTime();
数字钟
在上面的代码中,我尝试使用span元素实现一个数字时钟,并每1秒更新一次时间。 但是我可以看到span元素上的
getElementById
总是返回null,并且无法设置它。 我的目标不是实现时钟,而是学习JavaScript。
请帮帮我这里做错了什么?

问题:
window.onload=displayTime()

您正在将函数
displayTime
的返回值保存在
窗口中。onload
,当窗口确实加载时,它会运行任何内容。但是
displayTime
返回null。您不能运行null

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


由于您正在立即调用displayTime(在加载窗口之前),所以跨度还不存在。

问题是:
window.onload=displayTime()

您正在将函数
displayTime
的返回值保存在
窗口中。onload
,当窗口确实加载时,它会运行任何内容。但是
displayTime
返回null。您不能运行null

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


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

这是因为您正在调用而不是将
displayTime
分配给
onload

使用

而不是

window.onload = displayTime();
基本上是当你说
window.onload=some
时,它计算
some
并将其值等于
window.onload


因此,您将说
displayTime()
它将在加载
窗口之前调用函数,因此它根本不会得到
span

这是因为您正在调用,而不是将
displayTime
分配给
onload

使用

而不是

window.onload = displayTime();
基本上是当你说
window.onload=some
时,它计算
some
并将其值等于
window.onload

因此,您将说
displayTime()
它将在加载
window
之前调用函数,因此它根本不会得到
span

检查这个Jsbin文件。 我刚刚删除了();from window.onload=显示时间;以及它的工作原理

检查这个Jsbin文件。
我刚刚删除了();from window.onload=显示时间;以及它的工作原理

看起来你的代码没有问题。看起来你的代码没有问题。