javascript clock故障运行计时器功能?

sty*_*ler 0 javascript

想知道我在这段代码中出错了什么,基本上startTime()只运行一次就可以了,所以时钟不会更新.任何人都可以建议我如何解决这个问题?

JS

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;
  }
Run Code Online (Sandbox Code Playgroud)

HTML

    <body onload="startTime()">

<p>Date</p>
<?php echo date("d/m/y"); ?>

<p>Time</p>
<div id="txt"></div>
Run Code Online (Sandbox Code Playgroud)

链接http://bit.ly/IC9ohX

Sir*_*rko 5

你的函数范围有问题.

简短解决方案:改变

t=setTimeout( 'startTime()',500);
Run Code Online (Sandbox Code Playgroud)

对此.

t = setTimeout( startTime, 500 );
Run Code Online (Sandbox Code Playgroud)

说明:

该函数startTime在函数中定义window.onload,仅在该函数内可见(及其中的函数)!

在您的代码中,JavaScript等待500毫秒,然后尝试执行代码startTime().它startTime在全局范围内搜索函数(这是执行范围setTimeout)并且找不到任何引用,从而导致错误并且您的代码无法正常工作.

我的代码将函数的引用传递startTimesetTimeout.这样,引擎就不必搜索处理程序,也不会在那时失败.在setTimeout调用的位置,您处于范围内window.unload,因此引擎知道函数startTime并且可以处理传递给的处理程序setTimeout.