Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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时钟代码从html文件移动到外部.js文件_Javascript_External_Clock - Fatal编程技术网

将javascript时钟代码从html文件移动到外部.js文件

将javascript时钟代码从html文件移动到外部.js文件,javascript,external,clock,Javascript,External,Clock,所以我做了一个时钟,它工作得很好。现在我想将javascript移动到一个外部文件中,并使用 <SCRIPT type="text/javascript" language="JavaScript" src="clock.js" </SCRIPT> 但我不知道如何保持更新。我尝试了一些事情,结果是:页面加载时时间是静态的,每次更新都会在屏幕上打印,根本没有时间 <html> <head> <script type="text/javascrip

所以我做了一个时钟,它工作得很好。现在我想将javascript移动到一个外部文件中,并使用

<SCRIPT  type="text/javascript" language="JavaScript" src="clock.js"
</SCRIPT>
但我不知道如何保持更新。我尝试了一些事情,结果是:页面加载时时间是静态的,每次更新都会在屏幕上打印,根本没有时间

<html>
<head>
<script type="text/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('startTime()',500);
}

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

<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
你错过了结尾>

应该如此

<SCRIPT  type="text/javascript" language="JavaScript" src="clock.js">
</SCRIPT>

我会这样做的。将此代码放入外部js文件:

function startTime() {
    var today=new Date(),
        h=today.getHours(),
        m=today.getMinutes(),
        s=today.getSeconds();

    // add a zero in front of numbers<10
    m=checkTime(m);
    s=checkTime(s);
    document.getElementById('txt').innerHTML=h+":"+m+":"+s;
}

function checkTime(i) {
    if (i<10) {
        i="0" + i;
    }
    return i;
}
然后在主html页面中,类似以下内容:

<body onload="setInterval(startTime, 500);">

请尝试setInterval,而不是setTimeout,不要在setInterval中使用引号。只需执行SetIntervalsStartTime,500。@travis,-tjameson是对的,请使用setInterval,setTimeout以给定的间隔运行函数一次,就像延迟它一样。setInterval以给定的时间间隔连续运行函数。您可以使用停止函数removeIntervalintervalId@tjameson-现有的setTimeout是超时调用的函数的最后一行,因此将其替换为setInterval将是一个非常糟糕的主意。完全从函数中删除它,并在onload处理程序中使用setInterval就可以了。@tjameson是这样做的,但它有点神经质。chrome和firefox都缺少2秒或3秒…所以只要试着删除language=JavaScript我不确定它是否应该在那里,然后打开firebug firefox的web选项卡,告诉我:clock.js自己下载吗?is my suggestion-将div元素的ID传递给startTime函数,startTime函数将被修改为将ID作为参数,以便可以轻松地应用于具有不同ID的元素的多个页面。