2012-05-19 174 views
0

我有一个视频阵列,当一个结束时,数组中的下一个应该播放。
我发现这个脚本:在“结束”播放下一个视频

function myNewSrc() { 
    var myVideo = document.getElementsByTagName("video")[0]; 
    myVideo.src = 
     "http://cheerioscoupons.info/wp-content/uploads/_Cheerios-Coupons-1-300x283.jpg"; 
    myVideo.load(); 
    myVideo.play(); 
} 
function myAddListener(){ 
    var myVideo = document.getElementsByTagName("video")[0]; 
    myVideo.addEventListener('ended',myNewSrc,false); 
} 

,但我有我当前的脚本,这是实现它的麻烦,

var numb = $(this).index(), 
    videos = [ 
     "images/talking1.m4v", 
     "images/talking2.m4v", 
     "images/talking1.m4v", 
     "images/talking2.m4v", 
     "images/talking1.m4v", 
     "images/talking2.m4v" 
    ], 
    myVideo = document.getElementById("myVid"); 
    myVideo.src = videos[numb]; 
    myVideo.load(); 
    setTimeout(function(){ 
     myVideo.play(); 
    }, 200); 

于是,两个问题:

  1. 他们在干扰吗?第一个不会改变视频。
  2. 如何组合这些以便下一个被调用的视频是数组中的下一个视频?
+1

一个问题,你重新声明视频数组每个调用... –

+0

另一个问题:'document.getElementsByTagName(“video”);'将返回一个元素数组,而不是一个单一的DOM元素。 –

回答

5

1.
document.getElementsByTagName将返回元件的阵列,而不是一个。所以

var myVideo = document.getElementsByTagName("video"); 
myVideo.addEventListener('ended',myNewSrc,false); //wrong 

var myVideo = document.getElementsByTagName("video"); 
myVideo.load(); //wrong 
myVideo.play(); //wrong 

什么应该是:

myVideo[0].load() //if there is only one 

for(var i=0;i<myVideo.length;i++){ 
    myVideo[i].load(); //if there is more 
} 

2.
ended后播放其他视频,

var videos = [ 
    "images/talking1.m4v", 
    "images/talking2.m4v", 
]; 
function playArray(index,ele,array,listener){ 
    ele.removeEventListener(listener||0); 
    ele.src = array[index]; 
    ele.load(); 
    ele.play(); 
    index++; 
    if(index>=array.length){ 
     index=0; 
    } 
    listener = ele.addEventListener('ended',function(){ 
     playArray(index,ele,array,listener); 
    },false); 
} 
playArray(0,document.getElementById("myVid"),videos); 

现场演示:http://jsfiddle.net/DerekL/qeLcD/(与更换数组与文本而不是viedos)

+0

究竟应该去哪里? (因为他们不是第一件事情,我让他们更接近一个长脚本[这是大多数与视频交互的点击效果]) –

+0

@ Nata2haMayan2 - 把所有的东西放在'',并且只是当你需要时调用'playArray()'。 –

+1

非常感谢您的回答,我明白了。它的工作原理 –

相关问题