2013-02-13 67 views
0

好的。所以我正在学习如何制作一个时钟。去W3schools检查代码。现在我想从军事时间等等中解决它。但我似乎无法让代码工作。当我把代码放在一个JS文件中。我没有得到代码运行。如果我把它嵌入HTML中,它可以工作吗?我在这里做错了什么?JavaScript时钟仅适用于嵌入代码?怎么来的?

function startTime() 
{ 
var today=new Date(); 
var h=today.getHours(); 
var m=today.getMinutes(); 
var s=today.getSeconds(); 
// add a zero in front of numbers<10 
m=checkTime(m); 
s=checkTime(s); 
document.getElementById('txt').innerHTML=h+":"+m+":"+s; 
t=setTimeout(function(){startTime()},500); 
} 

function checkTime(i) 
{ 
if (i<10) 
{ 
i="0" + i; 
    } 
return i; 
} 

HTML是如下

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 

<title>City Clock</title> 
<link rel="stylesheet" href="clock.css"> 
</head> 

<body> 
<h1> Austen's Clock</h1> 



</head> 

<body onload="startTime()"> 
<div id="txt"></div> 
</body> 
</html> 


<script type="text/javascript" src="clock.js"></script> 
</body> 
</html> 
+0

'<脚本类型= “文本/ JavaScript的” SRC = “clock.js”>'当客户端解释应该在'head' – Aesthete 2013-02-13 07:35:13

+0

'startTime'是未知的' 'body'的onload'属性。 – Zeta 2013-02-13 07:35:41

+0

@Zeta我不认为重要 - AFAIK内联脚本被包装在一个解释的'eval'块中,该块只是在该块被实际调用时定义的那个时间传递该字符串。 – Alnitak 2013-02-13 08:02:51

回答

0

移动<script type="text/javascript" src="clock.js"></script>到文档的头部

OR

重写你的代码是这样

window.onload = function startTime() {..... 
+0

这不是真的回答“我在这里做错了什么?”。这是一个有效的解决方案,但OP应该知道_Why_它的工作原理。 – Zeta 2013-02-13 07:36:28

+0

啊啊,谢谢。像魅力一样工作。 – 2013-02-13 21:20:57

0

你inclu已经012d标签在第一次关闭</html>标签后 - 应该没有任何其他元素之后,所以他们应该被忽略。

移动它,使它成为</body>标记中的最后一个东西。

[FWIW,你代码实际上确实对我工作在Chrome和Firefox的MacOS X上使用Chrome最少,<script>元素被自动</body>标签内浏览器移动。]

0

回顾以前的答复:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 

<title>City Clock</title> 
<link rel="stylesheet" href="clock.css"> 
<script type="text/javascript" src="clock.js"></script> 
</head> 

<body onload="startTime()"> 

<h1> Austen's Clock</h1> 
<div id="txt"></div> 

</body> 
</html>