javascript - (缩短这个)Javascript 计时

标签 javascript performance

<script>
window.onload=function(){
function nowTime(){
var s=0,m;
(function(){
s++;
m=Math.floor(s/60);
document.getElementById('t').innerHTML=(Math.floor(m/60))+':'+(m%60)+':'+(s%60);
setTimeout(arguments.callee,1000);
})();}
nowTime();}
</script>
<div id="t"></div>

这是为了计时,即计算经过了多少秒。
显示格式为 HH:MM:SS。
有人可以缩短它或加速它(我的意思是更好的性能)吗?

此代码每 15 分钟有 100 毫秒的延迟。以下答案也有类似的时间延迟。这个时间并不重要。如果您愿意,校准时间非常容易。

最佳答案

window.onload = function() {
    var s = 0, m, el = document.getElementById('t');
    (function next() {
        el.innerHTML = ~~((m = ~~(++s / 60)) / 60) + ':' + (m % 60) + ':' + (s % 60);
        setTimeout(next, 1000);
    })();
}
  1. 请勿使用arguments.callee ,已弃用。
  2. 缓存 DOM 元素。
  3. Math.floor 可以替换为 ~~ .
  4. 给变量赋值是一个表达式,它返回RHS的值,所以可以把 m = ~~(++s / 60)第一次使用 m .

然后你可以丑化它(154 个字符):

window.onload=function(){var n,t=0,e=document.getElementById("t")
!function o(){e.innerHTML=~~((n=~~(++t/60))/60)+":"+n%60+":"+t%60,setTimeout(o,1e3)}()}

工作演示:http://jsfiddle.net/PN9An/

关于javascript - (缩短这个)Javascript 计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809225/

相关文章:

javascript - 创建多系列折线图,从数据库获取数据

javascript - 你如何在 jQuery 中编辑 HTML 表单元素?

javascript - addEventListener 不会在 javascript 中触发

Python 3.1.3 打开 mbox 文件,与 python 2.x 相比真的慢吗?

performance - 加速numpy矩阵逆

c++ - 为什么设置CPU亲和性会使线程运行更慢?

java - 将数组拆分为 X 长度的片段

javascript - 如何为 html 元素设置不同颜色(自动突出显示)的样式

javascript - 如何使用 Ember.js 显示(在 View 中)列表子集?

performance - 说网络爬虫受 I/O 限制而不是 CPU 限制是什么意思?