0

ビデオの配列があり、1 つが終了すると、配列の次のビデオが再生されます。
私はこのスクリプトを見つけました:

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

だから、2つの質問:

  1. 彼らは干渉していますか?最初のものは、ビデオをまったく変更しません。
  2. これらを組み合わせて、次に呼び出されるビデオが配列内の次のビデオになるようにするにはどうすればよいですか?
4

3 に答える 3

4


document.getElementsByTagName1.1つではなく要素の配列を返しますそれで

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の代わりにテキスト付きの配列に置き換えられました)

于 2012-05-19T20:03:29.590 に答える
-1

play let index = 0 video = document.getElementsByTagName('video')[0] play = () => { const files = document.getElementById('file').files const file = files[index++ % files.length] const url = window.URL.createObjectURL(file) video.src = url video.load() } video.addEventListener('終了', 再生, false)

于 2020-03-26T21:25:20.863 に答える