2

我正在尝试制作一个小计数器来显示一部电影的播放量,比如在 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;
}
4

2 回答 2

1

这条线是有问题的:

seconds = Math.round(seconds);

您想在Math.floor此处使用以获得正确的结果。

现场演示:http: //jsfiddle.net/simevidas/h6yst/

于 2011-04-09T15:05:01.370 回答
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);
于 2011-04-09T14:08:48.633 回答