1

次のように、通常の時間 (分:秒) で記述されたyoutube APIplayer.getDuration()を使用する方法を探しています。player.getCurrentTime()

var mind = player.getCurrentTime() /*or player.getDuration()*/  % (60 * 60);
var m = Math.floor(mind / 60);

var secd = mind % 60;
var s = Math.ceil(secd)

document.write(m,":",s); seconds;

しかし、それはエラーを送信し続けますNaN:NaN

また、次のような関数を使用してビデオが終了したときに画像を変更したいYT.PlayerState.ENDED:

if(YT.PlayerState.ENDED){
 $("#change").attr('src', "../play button.png");
             }

しかし、それは機能していませんか?

4

2 に答える 2

1

ビデオが読み込まれたときにこれらの関数を呼び出すようにしてください。そうしないと、NaN になります。ただ alert(player.getCurrentTime()); 出力が何であるかを確認します。

-

if 文が間違っている場合。ENDED を何も比較していません。例については、これを参照してください

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
    }
}
于 2013-10-04T01:10:29.357 に答える
0

プレーヤーが正しく設定されていない可能性があります。また、再生中に getCurrentTime() の値が変化します。毎秒呼び出す関数にコードを入れます。おそらく jquery.min.js を使用して値を表示します。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script type='text/javascript'>
var player;  // Reference to global player object.

// call the function every 1 second.
setInterval(displTime,1000);  // PUT THIS STATEMENT JUST AFTER THE PLAYER HAS BEEN CREATED. 

function displTime() {
if (! player)
   alert("NO player object !");  // Check if player has been set. 
// player.getCurrentTime() or player.getDuration()
var mind = player.getCurrentTime();   // returns elapsed time in seconds 
var m = Math.floor(mind / 60);
var secd = mind % 60;
var s = Math.ceil(secd)
$("#pt").html(m + ":" + s);  // Using the JQUERY library to write to body
}
     </script>



          <div id="pt"></div>    <!-- Put this in the html BODY to display m:s -->
于 2013-10-04T08:28:15.127 に答える