如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
How to play each audio element on a page (HTML, JQuery, Javascript)
O.k 我有一个页面上有多个音频元素。我正在寻找一种播放每个元素的方法,从第一个开始,等待它完成播放,然后继续下一个音频元素,直到最后一个元素。有什么办法可以做到这一点吗?谢谢!
编辑:
我无法添加代码示例,因为音频元素都是由 PHP 动态添加的,因此在此之前它是一个空文件。
您可以通过将每个音频元素存储在队列中来执行此操作。假设您将每个元素存储在数组 audioElements 中。
var index = 0;
function playNext(index){
audioElements[index].play(); //this will play the element
audioElements[index].on('ended', function(){ //this will bind a function to the "ended" event
//increment the index to target the next element
index++;
if(index < audioElements.length){
//plays the next song and binds the function to the ended event again until the queue is empty
playNext(index);
}
}
}
playNext(index);
基于@liam-Schauerman的回答,我实际上提出了这个解决方案:
var index = 0;
var audioElements = document.getElementsByTagName('audio');
function playNext(index) {
audioElements[index].play();
$(audioElements[index]).bind("ended", function(){
index++;
if(index < audioElements.length){
playNext(index);
}
});
}
$(document).ready(function() {
$("#swig").click(function() {
audioElements[index].play();
$(audioElements[index]).bind("ended", function(){
index = index + 1;
if(index < audioElements.length){
playNext(index);
}
});
});
});
我只是盲目地编码了这个。如果有人详细说明以及为什么这样做,我将不胜感激。
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素