Продолжительность отображения JavaScript - PullRequest
2 голосов
/ 09 апреля 2011

Я пытаюсь сделать небольшой счетчик, который отображает, сколько фильма было воспроизведено, как на YouTube.

Я хочу, чтобы время выводило примерно так:

<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;
}

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Эта строка проблематична:

seconds = Math.round(seconds);

Вы хотите использовать Math.floor здесь, чтобы получить правильный результат.

Демо: http://jsfiddle.net/simevidas/h6yst/

0 голосов
/ 09 апреля 2011

Вы перезаписываете содержимое, присваивая «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);
...