选择一个随机数组来设置Youtube videoId API

选择一个随机数组来设置Youtube videoId API

问题描述:

我想设置一个videoId的数组,以便能够随机加载。我试图添加视频阵列作为videoId,并没有奏效。我是一个JS newb,所以我不确定我应该为此返回什么。我得到尽可能的:选择一个随机数组来设置Youtube videoId API

<div id="player"></div> 

<script> 
function rotateYT() { 
    var videos = [ 
     'ZMnjkcvjN-E', 
     'RFQfSMbLCWw', 
    ]; 

    var index=Math.floor(Math.random() * videos.length); 
} 
// 2. This code loads the IFrame Player API code asynchronously. 
var tag = document.createElement('script'); 

tag.src = "https://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

// 3. This function creates an <iframe> (and YouTube player) 
// after the API code downloads. 
var player; 
function onYouTubeIframeAPIReady() { 
    player = new YT.Player('player', { 
     height: '300', 
     width: '300', 
     videoId: videos[index], //where I'm trying to get the random videos 
     events: { 
      'onReady': onPlayerReady, 
     } 
    }); 
} 

// 4. The API will call this function when the video player is ready. 
function onPlayerReady(event) { 
    event.target.playVideo(); 
    event.target.mute(); 
    event.target.setPlaybackQuality('small'); 
} 
</script> 
+0

你永远不调用函数,并且该函数不返回任何内容。 – Barmar 2015-03-03 01:05:53

+0

变量'videos'和'index'是'rotateYT'的本地变量,你不能在'onYouTubeIframeAPIReady'中使用它们。 – Barmar 2015-03-03 01:06:32

的函数需要返回选定的视频ID:

function rotateYT() { 
    var videos = [ 
     'ZMnjkcvjN-E', 
     'RFQfSMbLCWw', 
    ]; 

    var index=Math.floor(Math.random() * videos.length); 
    return videos[index]; 
} 

然后,你需要调用它onYouTubeIframeAPIReady

function onYouTubeIframeAPIReady() { 
    var videoID = rotateYT(); 
    player = new YT.Player('player', { 
     height: '300', 
     width: '300', 
     videoId: videoID, 
     events: { 
      'onReady': onPlayerReady, 
     } 
    }); 
} 
+0

噢,天哪..当你说这是本地的时候,我意识到我的愚蠢的错误:/。我只是将该数组包含在YouTube上的YouTubeIframeAPIReady函数中,并将其称为视频[索引],并且工作正常。谢谢! – 2015-03-03 01:11:16

+1

您不应该在两个函数中重复该数组。正如我所展示的那样做,所以你把信息保存在一个地方。 – Barmar 2015-03-03 01:12:25