2011-04-09 183 views
2

我試圖製作一個顯示電影播放量的小計數器,就像在YouTube上一樣。JavaScript顯示持續時間

我想這樣的時間輸出:

<div id="timeInfo">00:23</div> 

如何實現這一目標? 我嘗試沒有成功如下:

function infTime(){ 
    timeInfo.innerHTML = formatTime(video.currentTime); 

    if (video.duration) { 
     timeInfo.innerHTML = formatTime(video.duration); 
    } 
} 

function formatTime (seconds) { 
    seconds = Math.round(seconds); 

    minutes = Math.floor(seconds/60); 
    minutes = (minutes >= 10) ? minutes : "0" + minutes; 

    seconds = Math.floor(seconds % 60); 
    seconds = (seconds >= 10) ? seconds : "0" + seconds; 

    return minutes + ":" + seconds; 
} 
+0

其他。那麼它不成功呢?哦,等我明白了。 – Pointy 2011-04-09 14:07:06

回答

1

這條線是有問題的:

seconds = Math.round(seconds); 

你想用Math.floor這裏得到正確的結果。

現場演示:不是事實,「分鐘」應該用'var`關鍵字,看起來OK我被宣佈http://jsfiddle.net/simevidas/h6yst/

+0

在最壞的情況下,它會讓它停止一秒,不是嗎? – Pointy 2011-04-09 15:08:51

+0

@Pointy使用'Math.round'產生一個半秒的結果(因爲值[0.5,1]導致'00:01'而不是'00:00',並且值[1.5,2 >導致'00:02'而不是'00:01'等)。如果你的意思是我的演示,最壞的情況是100ms。 – 2011-04-09 17:16:23

0

你被分配到「的innerHTML」兩次改寫內容。第二個表達式可以用「+ =」被寫入,或者(更好的),你可以單獨建立字符串:

infTime: function() { 
    var info = formatTime(video.currentTime) + (video.duration ? ' ' + formatTime(video.duration) : ''); 
    timeInfo.innerHTML = info; 
} 

現在,當然,這假定「timeInfo」是真的到了適當的DOM元素的引用,獲得也許是這樣的:

var timeInfo = document.getElementById('timeInfo'); 

此外,請記得在「formatTime」功能,在第一次使用前用var關鍵字,以「分鐘」是一個局部變量:

var minutes = Math.floor(seconds/60); 
+0

它不能工作:/ – 2011-04-09 14:13:27

+0

那麼@Jeremy,你不覺得那個問題的確切描述可以幫助我嗎? – Pointy 2011-04-09 14:16:02

+1

不要混淆不想描述這個問題,不知道如何描述它,甚至不知道需要更好的描述':)' – 2011-04-09 14:50:31