原生js实现计时器

「爱情、让人受尽委屈。」 2023-06-05 08:13 116阅读 0赞

文章地址 https://www.cnblogs.com/sandraryan/

点击开始计时,可以计次,暂停。点了暂停可以继续计时,计次,点击重置清空。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. .wrap {
  10. width: 90%;
  11. margin: 50px auto;
  12. background-color: #333333;
  13. text-align: center;
  14. padding: 50px 0;
  15. }
  16. .time {
  17. margin-bottom: 50px;
  18. }
  19. span {
  20. color: white;
  21. font-size: 100px;
  22. }
  23. .control button {
  24. width: 80px;
  25. height: 40px;
  26. border-radius: 7px;
  27. border: 1px solid #333;
  28. outline: none;
  29. font-size: 20px;
  30. color: white;
  31. }
  32. .control button:nth-child(1) {
  33. background-color: #90f62b;
  34. }
  35. .control button:nth-child(2) {
  36. background-color: #35b1f8;
  37. }
  38. .control button:nth-child(3) {
  39. background-color: #f5a123;
  40. display: none;
  41. }
  42. .control button:nth-child(4) {
  43. background-color: #f75629;
  44. display: none;
  45. }
  46. .time span:last-child {
  47. display: inline-block;
  48. width: 90px;
  49. }
  50. #show {
  51. color: white;
  52. font-size: 18px;
  53. margin: 20px;
  54. }
  55. </style>
  56. </head>
  57. <body>
  58. <div class="wrap">
  59. <div class="time">
  60. <span>00:</span>
  61. <span>00:</span>
  62. <span>00:</span>
  63. <span>000</span>
  64. </div>
  65. <div class="control">
  66. <button>启动</button>
  67. <button>复位</button>
  68. <button>计次</button>
  69. <button>暂停</button>
  70. </div>
  71. <div id="show"></div>
  72. </div>
  73. <script>
  74. // 获取元素
  75. var num = document.querySelectorAll(".time span");
  76. var start = document.querySelectorAll(".control button")[0];
  77. var reset = document.querySelectorAll(".control button")[1];
  78. var times = document.querySelectorAll(".control button")[2];
  79. var pause = document.querySelectorAll(".control button")[3];
  80. var show = document.getElementById("show");
  81. // 初始化时间值
  82. var hour = 0,
  83. minutes = 0,
  84. seconds = 0,
  85. ms = 0;
  86. // 创建定时器的变量
  87. var timer;
  88. // 创建时间数组
  89. var timeArr = [hour, minutes, seconds, ms];
  90. function fun() {
  91. // 设置定时器
  92. timer = setInterval(function () {
  93. // +=11 秒数最后一位数也会变化,+=10最后一位永远是0
  94. ms += 11;
  95. // 如果毫秒数大于0小于999,毫秒数的位置还是该毫秒数
  96. // 否则(大于999),毫秒数的位置替换为000,毫秒数重置为0,分钟++
  97. if (ms > 0 && ms < 999) {
  98. num[3].innerHTML = ms;
  99. } else {
  100. num[3].innerHTML = '000';
  101. ms = 0;
  102. seconds++;
  103. }
  104. // 如果秒数大于0并小于59
  105. if (seconds > 0 && seconds < 59) {
  106. // 如果秒数小于10,秒数写为0和当前秒数(01-09)
  107. if (seconds < 10) {
  108. num[2].innerHTML = '0' + seconds + ':';
  109. } else {
  110. // 秒数大于10,秒数为当前值
  111. num[2].innerHTML = seconds + ':';
  112. }
  113. } else {
  114. // 秒数超过59,重置为0,分钟++,秒数位置变成00
  115. seconds = 0;
  116. minutes++;
  117. num[2].innerHTML = "00" + ':';
  118. }
  119. if (seconds > 59) {
  120. // 如果秒数大于59,且分钟小于10,补0,分钟大于10,显示
  121. if (minutes < 10) {
  122. num[1].innerHTML = '0' + minutes + ':';
  123. } else {
  124. num[1].innerHTML = minutes + ':';
  125. }
  126. // 秒数大于59,分钟++ 显示分钟数
  127. minutes++;
  128. num[1].innerHTML = minutes + ':';
  129. // 如果秒数小于59,显示00分钟
  130. // 分钟变成0,小时++
  131. } else {
  132. num[1].innerHTML = '00' + ':';
  133. minutes = 0;
  134. hour++;
  135. }
  136. // 如果,分钟数大于59,进入外层条件
  137. if (minutes > 59) {
  138. // 如果小时小于10,小时处的内容为补0 + 小时数
  139. if (hour < 10) {
  140. num[0].innerHTML = '0' + hour + ':';
  141. } else {
  142. num[0].innerHTML = hour + ':';
  143. }
  144. }
  145. }, 10);
  146. }
  147. // 封装一个函数
  148. // t作为计数器,作为每一条时间的序列号
  149. var t = 0;
  150. function counter() {
  151. // 用abcd获取num数组的各个下标的值
  152. var a = num[0].innerHTML;
  153. var b = num[1].innerHTML;
  154. var c = num[2].innerHTML;
  155. var d = num[3].innerHTML;
  156. // 函数调用,计时器++(d点一次加一条)
  157. t++;
  158. // 创建一个p元素,追加给展示区(展示每一条事件列表)
  159. var n = document.createElement('p');
  160. n.innerHTML = t + '.' + a + b + c + d;
  161. show.appendChild(n);
  162. }
  163. // 清除定时器
  164. function clear() {
  165. clearInterval(timer);
  166. }
  167. // 重置函数
  168. function over() {
  169. // 清楚定时器
  170. clearInterval(timer);
  171. // 把时间重置
  172. hour = 0;
  173. seconds = 0;
  174. minutes = 0;
  175. ms = 0;
  176. // 页面元素赋值重置
  177. num[0].innerHTML = '0' + hour + ':';
  178. num[1].innerText = '0' + minutes + ' : ';
  179. num[2].innerText = '0' + seconds + ' . ';
  180. num[3].innerText = '00' + ms;
  181. }
  182. // 开始按钮注册点击时间,隐藏开始重置按钮,计时暂停按钮出现
  183. // 调用函数开始运行整个计时器
  184. start.onclick = function () {
  185. start.style.display = "none";
  186. reset.style.display = "none";
  187. times.style.display = "inline-block";
  188. pause.style.display = "inline-block";
  189. fun();
  190. }
  191. // 点击停止按钮,隐藏停止计次按钮,开始重置按钮出现
  192. pause.onclick = function () {
  193. pause.style.display = "none";
  194. times.style.display = "none";
  195. start.style.display = "inline-block";
  196. reset.style.display = "inline-block";
  197. clear();
  198. }
  199. // 点击计次按钮,在展示区防放置当前时间值
  200. times.onclick = function () {
  201. counter();
  202. }
  203. // 点击重置按钮,重置页面元素,重置时间,清空页面内容
  204. reset.onclick = function () {
  205. over();
  206. show.innerHTML = '';
  207. }
  208. </script>
  209. </body>
  210. </html>

1645790-20191003115728263-2119041015.png

1645790-20191003115752288-1816920179.png

that‘s all ~~~

转载于:https://www.cnblogs.com/sandraryan/p/11619493.html

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 js:计时器

    题目描述 实现一个打点计时器,要求 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为

    相关 js计时器

    JS提供了两种计时器的方法 1. window.setInterval(); 这个方法就是在一个周期内反复执行一直到窗口关闭或者 clearInterval()

    相关 js 计时器实现钟表

    > 下述案列的几点注意事项: > 当给时钟的时针、分针和秒针设置旋转动画时就会出现:从59s向60s移动时会逆向旋转到达,而不是顺时针到达。解决: 去除旋转动画 > 为

    相关 原生JS实现Ajax

    >   前 言 > >    这篇文章将给大家详细介绍一下,与JQuery对照用原生的js怎么去实现Ajax。   <table style="border:0px so