【问题标题】:Get the current value of a function which returns random values获取返回随机值的函数的当前值
【发布时间】:2013-11-28 21:20:50
【问题描述】:

我想做的是获取当前正在播放的 youtube 视频的当前视频 ID 并将其显示在 div 中。

这是我的 YT iframe API 代码(就像谷歌开发网站上的基本示例一样):

  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId: currentVideoId,
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange,
        'onError': onError,
      },

    });
  }

如您所见,VideoId(它将播放的第一个视频)由一个名为“currentVideoId”的变量设置,该变量之前是这样设置的:

var currentVideoId = '9z4Kft47kBM'

我想在一个 div 中显示当前 ID

<div id="currentVideoDiv"></div>

为此,我使用了以下代码:

$('#currentVideoDiv').html('Currently Playing:' + currentVideoId);

到目前为止一切顺利,它正确显示了我的第一个 videoID。

现在第一个视频结束后,onStateChange 事件将调用此函数:

function onPlayerStateChange(event) {
 if(event.data === 0) {             
     swapVideo();      
        }
  }

“swapVideo”函数会调用函数getId();

 function swapVideo() {   

 player.stopVideo();
 player.loadVideoById(getId()); 
 }

getId() 函数会从一个 xml 文件中获取一个随机的 videoID,不用担心这个细节。

 function getId() {
 return videos[Math.floor(Math.random() * videos.length)];


}

所以现在正在播放具有新 videoId 的新视频,但 currentVideoDiv 中的值仍然相同,因为没有任何改变。

问题是,如何获取由getId函数随机设置的新的当前id并显示在currentVideoDiv中?

【问题讨论】:

  • 你什么时候打电话给$('#currentVideoDiv').html('Currently Playing:' + currentVideoId);?在swapVideo()之后?
  • 我在最后和 getId() 函数内部尝试过

标签: javascript jquery youtube-api youtube-javascript-api


【解决方案1】:

这是基于您在loadVideoById之后更新显示ID的假设

function swapVideo() {

 var currentVideoId = getId();

 player.stopVideo();
 player.loadVideoById(currentVideoId); 

 $('#currentVideoDiv').html('Currently Playing:' + currentVideoId);

}

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 2012-11-23
    • 2016-01-03
    • 1970-01-01
    • 2021-10-23
    • 2018-07-29
    • 2021-12-26
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多