如何用javascript实现一个时钟?

怎么用javascript实现一个时钟,要求每500毫秒刷新一下。请详细讲下代码,刚刚学习javascript,我一直没实现,时间显示出来了,就是不走动,时间显示的是死的... 怎么用javascript实现一个时钟,要求每500毫秒刷新一下。请详细讲下代码,刚刚学习javascript,我一直没实现,时间显示出来了,就是不走动,时间显示的是死的,不停地刷新,时间会发生变化。怎么办?
用setTimeout函数实现,谢谢!
展开
 我来答
千羽千寻online
2015-08-11 · TA获得超过645个赞
知道小有建树答主
回答量:735
采纳率:37%
帮助的人:178万
展开全部
function init(){
  clock();
  setInterval(clock,1000);
}
function clock(){
  var now = new Date();
  var ctx = document.getElementById('canvas').getContext('2d');
  ctx.save();
  ctx.clearRect(0,0,150,150);
  ctx.translate(75,75);
  ctx.scale(0.4,0.4);
  ctx.rotate(-Math.PI/2);
  ctx.strokeStyle = "black";
  ctx.fillStyle = "white";
  ctx.lineWidth = 8;
  ctx.lineCap = "round";

  // Hour marks
  ctx.save();
  for (var i=0;i<12;i++){
    ctx.beginPath();
    ctx.rotate(Math.PI/6);
    ctx.moveTo(100,0);
    ctx.lineTo(120,0);
    ctx.stroke();
  }
  ctx.restore();

  // Minute marks
  ctx.save();
  ctx.lineWidth = 5;
  for (i=0;i<60;i++){
    if (i%5!=0) {
      ctx.beginPath();
      ctx.moveTo(117,0);
      ctx.lineTo(120,0);
      ctx.stroke();
    }
    ctx.rotate(Math.PI/30);
  }
  ctx.restore();
  
  var sec = now.getSeconds();
  var min = now.getMinutes();
  var hr  = now.getHours();
  hr = hr>=12 ? hr-12 : hr;

  ctx.fillStyle = "black";

  // write Hours
  ctx.save();
  ctx.rotate( hr*(Math.PI/6) + (Math.PI/360)*min + (Math.PI/21600)*sec )
  ctx.lineWidth = 14;
  ctx.beginPath();
  ctx.moveTo(-20,0);
  ctx.lineTo(80,0);
  ctx.stroke();
  ctx.restore();

  // write Minutes
  ctx.save();
  ctx.rotate( (Math.PI/30)*min + (Math.PI/1800)*sec )
  ctx.lineWidth = 10;
  ctx.beginPath();
  ctx.moveTo(-28,0);
  ctx.lineTo(112,0);
  ctx.stroke();
  ctx.restore();
  
  // Write seconds
  ctx.save();
  ctx.rotate(sec * Math.PI/30);
  ctx.strokeStyle = "#D40000";
  ctx.fillStyle = "#D40000";
  ctx.lineWidth = 6;
  ctx.beginPath();
  ctx.moveTo(-30,0);
  ctx.lineTo(83,0);
  ctx.stroke();
  ctx.beginPath();
  ctx.arc(0,0,10,0,Math.PI*2,true);
  ctx.fill();
  ctx.beginPath();
  ctx.arc(95,0,10,0,Math.PI*2,true);
  ctx.stroke();
  ctx.fillStyle = "#555";
  ctx.arc(0,0,3,0,Math.PI*2,true);
  ctx.fill();
  ctx.restore();

  ctx.beginPath();
  ctx.lineWidth = 14;
  ctx.strokeStyle = '#325FA2';
  ctx.arc(0,0,142,0,Math.PI*2,true);
  ctx.stroke();

  ctx.restore();
}
微言摆渡人
推荐于2016-01-22 · TA获得超过875个赞
知道小有建树答主
回答量:1059
采纳率:59%
帮助的人:246万
展开全部
js中可以使用setInterval()函数实现简单的时钟功能。
setInterval(function,millisecond);第一个参数是要调用的函数名,第二个参数是间隔毫秒数。
例如:实现倒计时功能。先定义一个倒计时函数countDown,然后使用setInterval使其每秒执行一次。
function countDown(){
//每秒显示的时间减去一秒的代码

}

setInterval(countDown,1000);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
布爸的成长
推荐于2016-09-09 · 超过18用户采纳过TA的回答
知道答主
回答量:88
采纳率:100%
帮助的人:49.2万
展开全部
<script type="text/javascript">
document.write('<div id="time"></div>');
function showTime(){
var time = new Date();
document.getElementById("time").innerHTML=time.getFullYear()+"年"+(time.getMonth()+1)+"月"+time.getDate()+"日"+time.getHours()+":"+time.getMinutes()+":"+time.getSeconds();
}
setInterval(showTime,500);
</script>
拷贝上面代码,放在time.html文件里面,用浏览器打开就可以了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp4eJoEwV8xNyw3
2012-10-25 · TA获得超过514个赞
知道小有建树答主
回答量:689
采纳率:0%
帮助的人:582万
展开全部
<div id="time"></div>

function clock() {
var time = new Date();
document.getElementById("time").innerHTML=time.getFullYear()+"年"+(time.getMonth()+1)+"月"+time.getDate()+"日"+time.getHours()+":"+time.getMinutes()+":"+time.getSeconds();
setTimeout(clock, 500);

}
clock();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jippo08456
2015-08-21 · TA获得超过2630个赞
知道小有建树答主
回答量:915
采纳率:0%
帮助的人:628万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式