Javascript Jquery自动播放视频序列不工作

Javascript Jquery自动播放视频序列不工作,javascript,jquery,youtube,Javascript,Jquery,Youtube,我已经用这段代码工作了几天了,我就是想不出来 我能够使用youtube api自动播放视频序列。以下是我的例子: 但是,我们需要动态创建视频ID数组,因此我将其修改为: <script> $(function(){ $('li').on("click",function(){ var pilename = $(this).attr('data-pile'); var videoIDs = []; $("li[data-pil

我已经用这段代码工作了几天了,我就是想不出来

我能够使用youtube api自动播放视频序列。以下是我的例子:

但是,我们需要动态创建视频ID数组,因此我将其修改为:

<script>
$(function(){
    $('li').on("click",function(){

        var pilename = $(this).attr('data-pile');
        var videoIDs = [];
        $("li[data-pile='"+pilename+"']").each(function(index){
            videoIDs.push($(this).attr('id'));

        var player, currentVideoId = 0;

        function onYouTubeIframeAPIReady() {
            player = new YT.Player('player', {
                height: '350',
                width: '425',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        function onPlayerReady(event) {
            event.target.loadVideoById(videoIDs[currentVideoId]);
        }

        function onPlayerStateChange(event) {
            if (event.data == YT.PlayerState.ENDED) {
                currentVideoId++;
                if (currentVideoId < videoIDs.length) {
                    player.loadVideoById(videoIDs[currentVideoId]);
                }
            }
        }
    });
});
</script>

$(函数(){
$('li')。在(“单击”,函数()上){
var pilename=$(this.attr('data-pile');
var videoIDs=[];
$(“li[数据堆='”+pilename+“']”)。每个(函数(索引){
videoIDs.push($(this.attr('id'));
var播放器,currentVideoId=0;
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
高度:'350',
宽度:'425',
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
event.target.loadVideoById(VideoId[currentVideoId]);
}
函数onPlayerStateChange(事件){
如果(event.data==YT.PlayerState.end){
currentVideoId++;
if(当前视频ID<视频ID.长度){
loadVideoById(videoid[currentVideoId]);
}
}
}
});
});
以下是这一尝试:

然而,youtube api方法从未被调用


我的代码有问题吗?

导致代码中断的主要原因有两个:

  • 视频ID传递不正确;每个ID必须用单引号包装
  • 页面加载后,包含Youtube API的脚本将加载为空的var videoIDs=[];因此不会加载播放器
  • 要更正此问题,请按如下方式修改第一个文档:

  • 如图所示,添加一个表单
  • 向其中添加jquery代码
  • 从文件中删除完全播放视频的函数及其前面的代码(div id=“player”和包含youtube iframe\u api的脚本标记)

    
    

    在脚本标记中:

    var videoIDs = [<?php echo $vids;?>]; //the formatted string passed from the first file
    var player, currentVideoId = 0;
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
            height: '350',
            width: '425',
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }
    function onPlayerReady(event) {
        event.target.loadVideoById(videoIDs[currentVideoId]);
    }
    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.ENDED) {
            currentVideoId++;
            if (currentVideoId < videoIDs.length) {
                player.loadVideoById(videoIDs[currentVideoId]);
            }
        }
    }
    
    var videoIDs=[];//从第一个文件传递的格式化字符串
    var播放器,currentVideoId=0;
    函数onyoutubeiframeapiredy(){
    player=新的YT.player('player'{
    高度:'350',
    宽度:'425',
    活动:{
    “onReady”:onPlayerReady,
    “onStateChange”:onPlayerStateChange
    }
    });
    }
    函数onPlayerReady(事件){
    event.target.loadVideoById(VideoId[currentVideoId]);
    }
    函数onPlayerStateChange(事件){
    如果(event.data==YT.PlayerState.end){
    currentVideoId++;
    if(当前视频ID<视频ID.长度){
    loadVideoById(videoid[currentVideoId]);
    }
    }
    }
    

    它可以工作!

    这里是:视频没有播放。:/你需要将文件命名为“file-to-CALL.php”作为一个更合适的名称,比如player.php。其次,$vids=$\u POST['videos'];必须包装在php文件顶部的php中,如下所示:
    ,以从第一个文件中获取传递的ID。然后它将正确播放。请检查它并在您使用的浏览器上查看源代码?我访问了您的链接,视频也不播放。我使用的是chrome。这在您的浏览器上运行吗:我也使用chrome并经过测试它与Firefox和IE一起工作,就像一个魔咒。
    `<div id="player"></div><script src="http://www.youtube.com/iframe_api"></script>`
    
    var videoIDs = [<?php echo $vids;?>]; //the formatted string passed from the first file
    var player, currentVideoId = 0;
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
            height: '350',
            width: '425',
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }
    function onPlayerReady(event) {
        event.target.loadVideoById(videoIDs[currentVideoId]);
    }
    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.ENDED) {
            currentVideoId++;
            if (currentVideoId < videoIDs.length) {
                player.loadVideoById(videoIDs[currentVideoId]);
            }
        }
    }