Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择数组的随机元素以设置Youtube videoId API_Javascript_Arrays_Youtube Javascript Api - Fatal编程技术网

Javascript 选择数组的随机元素以设置Youtube videoId API

Javascript 选择数组的随机元素以设置Youtube videoId API,javascript,arrays,youtube-javascript-api,Javascript,Arrays,Youtube Javascript Api,我正在尝试设置一个videoId数组,以便能够从中进行选择并随机加载。我尝试将视频数组添加为videoId,但没有成功。我是一个JS新手,所以我不确定我应该为这个传回什么。我做到了这一点: <div id="player"></div> <script> function rotateYT() { var videos = [ 'ZMnjkcvjN-E', 'RFQfSMbLCWw', ]; var

我正在尝试设置一个videoId数组,以便能够从中进行选择并随机加载。我尝试将视频数组添加为videoId,但没有成功。我是一个JS新手,所以我不确定我应该为这个传回什么。我做到了这一点:

<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>

函数rotateYT(){
var视频=[
“ZMnjkcvjN-E”,
“RFQfSMbLCWw”,
];
var index=Math.floor(Math.random()*videos.length);
}
// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
高度:'300',
宽度:“300”,
videoId:videos[index],//我在哪里尝试获取随机视频
活动:{
“onReady”:onPlayerReady,
}
});
}
// 4. 当视频播放器准备就绪时,API将调用此函数。
函数onPlayerReady(事件){
event.target.playVideo();
event.target.mute();
event.target.setPlaybackQuality(“小”);
}

该函数需要返回选定的视频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,
        }
    });
}

您从不调用该函数,该函数也不会返回任何内容。变量
videos
index
rotateYT
的本地变量,您不能在
onyoutubeiframeapirey
中使用它们。哦,天哪。。你一说是本地的,我就意识到我的愚蠢错误:/。我刚刚在函数onYouTubeIframeAPIReady中包含了这个数组,并调用了videos[index],这就成功了。非常感谢。您不应该在两个函数中重复数组。照我说的做,这样你就可以把信息放在一个地方。