请检查我的代码,我在JS中创建了一个简单的日期,但它不起作用,我正在学习一个教程并且我有确切的代码。
<html>
<head>
<title>Clock</title>
<script>
function time() {
var time = new Date();
var hours = time.getHours();
var mins = time.getMinutes();
var secs = time.getSeconds();
if (secs<10) {
secs = "0" + secs;
}
if (mins<10) {
secs = "0" + mins;
}
document.getElementById("thetime").innerHTML=hours+":"+mins+":"+secs;
var timer = setTimeout(function(){time()},500);
}
</script>
</head>
<body onload="time()">
<div id="thetime"></div>
</body>
</html>
答案 0 :(得分:4)
您有function time() {...}
和var time = new Date();
。局部变量影响函数,意味着在setTimeout(function(){time()},500);
内,time
引用Date
对象,而不是函数。
解决方案:重命名其中任何一个。
答案 1 :(得分:1)
此外,
替换这部分代码:
if (mins<10) {
secs = "0" + mins;
}
用这个:
if (mins<10) {
mins= "0" + mins;
}
答案 2 :(得分:0)
尝试使用setInterval()
代替超时
function time() {
//Your stuff here...
}
var timer = setInterval(function(){time()},500);
答案 3 :(得分:0)
避免使用与函数名称相同的变量名称。它试图将变量称为函数。将其命名为currentTime
使其有效。
function time() {
var currentTime = new Date();
var hours = currentTime.getHours();
var mins = currentTime.getMinutes();
var secs = currentTime.getSeconds();
if (secs<10) {
secs = "0" + secs;
}
if (mins<10) {
secs = "0" + mins;
}
document.getElementById("thetime").innerHTML=hours+":"+mins+":"+secs;
var timer = setTimeout(function(){time()},500);
}
答案 4 :(得分:0)
您命名的变量var time
与您的函数time()
相同。你应该重命名其中一个。
例如,为您的函数命名customTimer
。您可以通过setTimeout
和html
onload
来调用此功能
<html>
<head>
<title>Clock</title>
<script>
function customTimer() {
var time = new Date();
var hours = time.getHours();
var mins = time.getMinutes();
var secs = time.getSeconds();
if (secs < 10) {
secs = "0" + secs;
}
if (mins < 10) {
mins = "0" + mins;
}
document.getElementById("thetime").innerHTML = hours + ":" + mins + ":" + secs;
var timer = setTimeout(function () { customTimer() }, 500);
}
</script>
</head>
<body onload="customTimer()">
<div id="thetime"></div>
</body>
</html>
&#13;