javascript显示一个时钟

 
  1. <HTML>
  2. <HEAD>
  3. <META name="GENERATOR" content="Microsoft FrontPage 5.0">
  4. <META name="ProgId" content="FrontPage.Editor.Document">
  5. <TITLE>指针式时钟</TITLE>
  6. </HEAD>
  7. <BODY οnlοad="clock()">
  8. <SCRIPT LANGUAGE="JavaScript">
  9. var S = '......';   S = S.split('');//构成秒针的圆点
  10. var M = '.....';    M = M.split('');//构成分针的圆点
  11. var H = '....';     H = H.split('');//构成时针的圆点
  12. var Ybase = 8;  //构成秒、分和时针的圆点之间的间隔距离(Y轴)
  13. var Xbase = 8;  //构成秒、分和时针的圆点之间的间隔距离(X轴)
  14. var dots = 12;  //钟盘上的小时刻度数,通常为12,即1,2,3,...,12
  15. for (var i = 0; i < dots; i++)
  16. {//将小时刻度值(即1,2,3,...,12)分别放入各自的<DIV>块中,且其id属性相同,即dot_Digits
  17.     document.write('<DIV id="dot_Digits" style="position:absolute;width:30px;height:30px;font-size:10px;color:black;text-align:center;padding-top:10px">'+(i+1)+'</DIV>');
  18. }
  19. for (i = 0; i < S.length; i++)
  20. {//将构成秒针的圆点分别放入各自的<DIV>块中,且其id属性相同,即s_dots
  21.     document.write('<DIV id=s_dots style="position:absolute;width:2px;height:2px;font-size:2px;background:red"></DIV>');
  22. }
  23. for (i = 0; i < M.length; i++) 
  24. {//将构成分针的圆点分别放入各自的<DIV>块中,且其id属性相同,即m_dots
  25.     document.write('<DIV id=m_dots style="position:absolute;width:2px;height:2px;font-size:2px;background:black"></DIV>');
  26. }
  27. for (i = 0; i < H.length; i++)
  28. {//将构成时针的圆点分别放入各自的<DIV>块中,且其id属性相同,即h_dots
  29.     document.write('<DIV id=h_dots style="position:absolute;width:2px;height:2px;font-size:2px;background:black"></DIV>');
  30. }
  31. function clock()
  32. {//显示指针式时钟
  33.     var time = new Date ();
  34.     var secs = time.getSeconds();
  35.     var mins = time.getMinutes();
  36.     var hrs = time.getHours();
  37.     var Ypos = document.body.scrollTop +80;  //把时钟中心设置为距可视区顶边 80 pixel
  38.     var Xpos = document.body.scrollLeft +100;//把时钟中心设置为距可视区左边界 100 pixel
  39.     for (var i=0; i < dots; ++i)
  40.     {//根据新的时钟中心和各个小时刻度值的角度值,设置其新坐标
  41.         dot_Digits[i].style.pixelTop = Ypos -15 + 44 * Math.sin(-Math.PI/2+2*Math.PI*(i+1)/12);
  42.         dot_Digits[i].style.pixelLeft = Xpos -15 + 44 * Math.cos(-Math.PI/2+2*Math.PI*(i+1)/12);
  43.     }
  44.     var sec = -Math.PI/2 + 2*Math.PI * secs/60;  //秒针角度
  45.     for (i=0; i < S.length; i++)
  46.     {//根据新的时钟中心和秒针角度,设置秒针上各个圆点的坐标值
  47.         s_dots[i].style.pixelTop = Ypos + i * Ybase * Math.sin(sec);
  48.         s_dots[i].style.pixelLeft = Xpos + i * Xbase * Math.cos(sec);
  49.     }
  50.     var min = -Math.PI/2 + 2*Math.PI * mins/60;  //分针角度
  51.     for (i=0; i < M.length; i++)
  52.     {//根据新的时钟中心和分针角度,设置分针上各个圆点的坐标值
  53.         m_dots[i].style.pixelTop = Ypos + i * Ybase * Math.sin(min);
  54.         m_dots[i].style.pixelLeft = Xpos + i * Xbase * Math.cos(min);
  55.     }
  56.     var hr = -Math.PI/2 + 2*Math.PI * (hrs+mins/60)/12;  //时针角度
  57.     for (i=0; i < H.length; i++)
  58.     {//根据新的时钟中心和时针角度,设置时针上各个圆点的坐标值
  59.         h_dots[i].style.pixelTop = Ypos + i * Ybase*Math.sin(hr);
  60.         h_dots[i].style.pixelLeft = Xpos + i * Xbase*Math.cos(hr);
  61.     }
  62.     setTimeout('clock()', 50);//定时
  63. }
  64. </SCRIPT>
  65. </BODY>
  66. </HTML>
设计思路
1、根据document.body对象的scrollTop和scrollLeft属性把时钟中心设置在页面可视区的左上角。
2、通过显示连续的几个小圆点 “.”来模拟显示秒针、分针和时针;而对于各个点的显示位置,可以根据各个指针的长度和角度计算得出。
3、为便于重新定位,可将表示时钟的所有元素(即小时刻度值和小圆点“.”)放入<DIV>标记,并且设置为绝对定位。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值