Stopwatch
class (click "Start", wait some seconds, click "Stop":
Class Stopwatch
"use strict"; ins.Stopwatch = function () { var dFr, dTo, that = this; this.nMilliseconds; this.nSeconds; this.nMinutes; this.nHours; this.nDays; var _bRun = false; this.bRun = function () { return _bRun; }; this.Start = function () { _bRun = true; this.Reset(); dFr = new Date(); }; this.Stop = function () { _bRun = false; if (!dFr) { return Reset(); } else { dTo = new Date(); return Calc(); } }; this.Reset = function () { dFr = dTo = null; this.nMilliseconds = this.nSeconds = this.nMinutes = this.nHours = this.nDays = 0; return 0; }; this.toString = function (sFormat) { if (typeof sFormat !== "string") sFormat = "m:s.f"; return sFormat.replace(/d/g, this.nDays.toString()). replace(/h/g, this.nHours.toString().PadLeft(2, "0")). replace(/m/g, this.nMinutes.toString().PadLeft(2, "0")). replace(/s/g, this.nSeconds.toString().PadLeft(2, "0")). replace(/f/g, this.nMilliseconds.toString().PadLeft(3,"0")); }; var Calc = function () { if (dFr && dTo && dFr.getTime() < dTo.getTime()) { var nTime = dTo.getTime() - dFr.getTime() that.nMilliseconds = Math.round(nTime); that.nSeconds = Math.floor(that.nMilliseconds / 1000); that.nMilliseconds -= that.nSeconds * 1000; that.nMinutes = Math.floor(that.nSeconds / 60); that.nSeconds -= that.nMinutes * 60; that.nHours = Math.floor(that.nMinutes / 60); that.nMinutes -= that.nHours * 60; that.nDays = Math.floor(that.nHours / 24); that.nHours -= that.nDays * 24; return nTime; } else { return that.Reset(); } }; this.Reset(); }; if (typeof String.prototype.PadLeft != "function") { String.prototype.PadLeft = function (nLen, sPad) { if (typeof sPad !== "string") sPad = " "; if (typeof nLen !== "number") nLen = 2; var sResult = this; while (sResult.length < nLen) sResult = sPad + sResult; return sResult; }; }Usage:
var oSW = new i.Stopwatch(); var oBtn, oDiv; window.onload = function () { oBtn = document.getElementById("btnFr"); oDiv = document.getElementById("divResults"); oBtn.onclick = ToggleSW; }; var ToggleSW = function () { oBtn.disabled = true; if (oSW.bRun()) { oSW.Stop(); } else { oSW.Start(); } oBtn.innerHTML = oSW.bRun() ? "Stop" : "Start"; oDiv.innerHTML = oSW.bRun() ? "" : oSW.toString("m:s:f"); oBtn.removeAttribute("disabled"); };
No comments:
Post a Comment