2016-05-12 2 views
1

私のウェブサイトでは、ユーザーが自分のサイトに所属していた時間(分や時間ではなく)の数を数えることを試みています。したがって、彼らが5分間それを行っていれば、5分ではなく300を表示します。 JavaScriptでとても経験不足ですので、助けてください。Javascript Second Counter

+0

このリンクにアクセスして、同様の質問それをチェックアウト:このコードをhttp://stackoverflow.com/questions/5517597/plain-count-up-timer-in-javascript –

答えて

4

setInterval関数を使用して、選択した頻度で別の関数を実行することができます。たとえば:あなたはこのスニペットを実行する場合

var seconds = 0; 
 
var el = document.getElementById('seconds-counter'); 
 

 
function incrementSeconds() { 
 
    seconds += 1; 
 
    el.innerText = "You have been here for " + seconds + " seconds."; 
 
} 
 

 
var cancel = setInterval(incrementSeconds, 1000);
<div id='seconds-counter'> </div>

は、あなたはカウンターが作動表示されます。 、あなたを

  • あなたが呼び出し

あなたはカウンターを毎秒をインクリメント呼び出したいので間のミリ秒数

  • を呼び出したい機能:

    setInterval関数は、2つのパラメータを取ります1000ミリ秒(1秒)を使いたい

    詳細については、MDN documentation for setIntervalを参照してください。

  • +0

    をすることができますコールバック呼び出しの遅延の可能性を考慮していないため、不正確な値が生成されます。 – jkordas

    +0

    良い点。私は「非常に経験の浅い」コメントのために、本当に基本的な例に行きましたが、私はもう一つの答えをupvoteします。 –

    +0

    ありがとうございます。これは素晴らしい作品です。 – JaredCBarnes

    3

    私の答えは上記のものと似ていますが、とにかくそれを与えます。これは1ページだけで動作するので、あなたのサイトはすでにAJAX上で動作していることを願っています。

    window.setInterval((function(){ 
     
        var start = Date.now(); 
     
        var textNode = document.createTextNode('0'); 
     
        document.getElementById('seconds').appendChild(textNode); 
     
        return function() { 
     
         textNode.data = Math.floor((Date.now()-start)/1000); 
     
         }; 
     
        }()), 1000);
    You've been on this page for <span id=seconds></span> seconds.

    +1

    このコードは、コールバック呼び出しの遅延の可能性を考慮しているため、より正確です。 – jkordas