在“结束”上播放数组中的下一个视频
play next video in an array on "ended"
我有一个视频数组,当一个结束时,数组中的下一个应该播放。
我找到了这个脚本:
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.
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
}
阿拉伯数字。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(
我使用多个文件输入修改了视频输入,以便用户可以选择文件。
https://jsfiddle.net/geqd31pu/
<input id="file" type="file" multiple>
<button onclick="play()">play</button>
<video id="video" src="" autoplay controls></video>
<script>
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('ended', play, false)
</script>
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('ended', play, false(
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 来自文档或下一个静态父级的事件委派
- angularjs移除焦点上的活动类并添加到下一个项目
- 尝试运行下一个上一个按钮以播放列表媒体播放器代码中的视频,出现错误
- HTML5视频上一个 - 下一个和自动播放
- 在“结束”上播放数组中的下一个视频
- 当我使用 JavaScript 动态加载下一个视频时出现黑屏
- Javascript下一个视频函数
- 当我的当前视频使用java脚本完成时,我如何播放下一个视频
- 获取下一个播放视频的视频id
- jQuery播放下一个视频上的滚动
- Jquery如何在播放下一个视频之前关闭上一个视频
- 任何Js,可以检测flash视频长度和显示播放再次和下一个视频
- HTML5 播放下一个视频,没有延迟
- YouTube API -获得下一个相关视频