0

我正在尝试开发一个网页。为此,我需要一个秒表。我找到了一个。但它满足了我的要求。我的要求是当我提交该页面时,我想继续秒表。我希望它作为单圈计时器运行。谁能帮我?请。

    <!doctype html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <title>Stopwatch</title>
 <script>
 // Simple example of using private variables
 //
 // To start the stopwatch:
 // obj.start();
 //
 // To get the duration in milliseconds without pausing / resuming:
 // var x = obj.time();
 //
 // To pause the stopwatch:
 // var x = obj.stop(); // Result is duration in milliseconds
 //
 // To resume a paused stopwatch
 // var x = obj.start(); // Result is duration in milliseconds
 //
 // To reset a paused stopwatch
 // obj.stop();
 //
 var    clsStopwatch = function() {
     // Private vars
     var    startAt = 0;    // Time of last start / resume. (0 if not running)
     var    lapTime = 0;    // Time on the clock when last stopped in milliseconds

     var    now = function() {
        return (new Date()).getTime();
     };
     // Public methods
     // Start or resume
     this.start = function() {
         startAt    = startAt ? startAt : now();
     };

    // Stop or pause
    this.stop = function() {
         // If running, update elapsed time otherwise keep it
         lapTime    = startAt ? lapTime + now() - startAt : lapTime;
         startAt    = 0; // Paused
     };

     // Reset
     this.reset = function() {
        lapTime = startAt = 0;
     };

     // Duration
     this.time = function() {
         return lapTime + (startAt ? now() - startAt : 0);
     };
 };

 var x = new clsStopwatch();
 var $time;
 var clocktimer;

 function pad(num, size) {
     var s = "0000" + num;
     return s.substr(s.length - size);
 }

 function formatTime(time) {
     var h = m = s = 0;
     var newTime = '';

     h = Math.floor( time / (60 * 60 * 1000) );
     time = time % (60 * 60 * 1000);
     m = Math.floor( time / (60 * 1000) );
     time = time % (60 * 1000);
     s = Math.floor( time / 1000 );

     newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2);
     return newTime;
 }

 function show() {
     $time = document.getElementById('time');
     update();
     start();
 }

 function update() {
     $time.innerHTML = formatTime(x.time());
 }

 function start() {
     clocktimer = setInterval("update()", 1);
     x.start();
 }

 function stop() {
     x.stop();
     clearInterval(clocktimer);
 }

 function reset() {
     stop();
     x.reset();
     update();
 }

 </script>
 </head>
     <body onload="show();">
         <div>Time: <span id="time"></span>
             <form action="testing.php?job=test" method="post">
                <input type="submit"/>
             </form>
         </div>
     </body>
 </html>
4

1 回答 1

1

有几种方法可以实现这一点,尽管我的建议是使用 cookie。

您可以使用 javaScript 将计时器启动时的时间戳存储在 cookie 中,如下所示:

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

var timerStarted = new Date();
createCookie('timerStarted', timerStarted.getTime(), 1)

然后,您可以在连续页面加载时从 cookie 中读取timerStarted值并使用它来计算时间差:

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

var timerStarted = new Date(readCookie(timerStarted));

JS Cookie 来源: http ://www.quirksmode.org/js/cookies.html

于 2013-11-01T09:30:27.773 回答