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」に 2 回割り当ててコンテンツを上書きしています。2 番目の式は "+=" で記述できますが、それ以外の場合 (より良い方法) は、文字列を個別に作成できます。

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

もちろん、これは「timeInfo」が実際には適切な DOM 要素への参照であり、おそらく次のように取得されることを前提としています。

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

varまた、「formatTime」関数で最初にキーワードを使用する前に、「分」をローカル変数にすることを忘れないでください。

    var minutes = Math.floor(seconds / 60);
于 2011-04-09T14:08:48.633 に答える