我对 Javascript 不太有经验,而且我几乎一整天都在努力解决这个问题。
我正在使用 Jquery 创建嵌入式 YouTube 视频的 ID 数组:
$(function() {
$('li').on("click",function(){
alert($(this).attr('data-pile'));
var pilename = $(this).attr('data-pile');
var videoIDs = [];
$("li[data-pile='"+pilename+"']").each(function(index){
videoIDs.push($(this).attr('id'));
});
$.each(videoIDs,function(){
});
});
});
我需要在这个JS中使用数组:
<script src="//www.youtube.com/iframe_api"></script>
<script>
/**
* Put your video IDs in this array
*/
var videoIDs = [
//my array of Ids here
];
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>
在嵌入视频的每个 div 中,我都应用了与视频具有相同 id 的 id。 我应该如何使这两个脚本工作? 如果有人能指出我正确的方向,我将非常感激。
最佳答案
您声明了两次 videoID 数组,一次在点击事件中,另一次在第二次中 脚本。
点击事件中的一个是该函数本地的,而另一个是全局的。 Javascript 具有函数作用域,因此一旦该函数结束,单击事件就会被丢弃。
如果您删除点击事件中的事件,我相信它应该可以工作。您还应该删除 $.each... 因为我认为它不会有帮助(您正在尝试创建一个播放列表,对吧?)。
应该注意的是,使用全局变量污染全局命名空间被认为是不好的做法。如果这是您页面上的所有代码,那么这可能不是问题。
关于javascript - 在 Jquery 中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909704/