1

我正在寻找一种在正常时间(分钟:秒)编写的 youtube APIplayer.getDuration()player.getCurrentTime()来自youtube API的方法,如下所示:

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。只是警报(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 回答