2015-01-17 3 views
0

O.k У меня есть страница, на которой есть несколько звуковых элементов. Я ищу способ играть каждый, начиная с первого, ожидая, пока он закончит игру, а затем перейдем к следующему элементу аудио до последнего элемента. Есть ли способ сделать это? Благодаря!Как воспроизводить каждый аудио элемент на странице (HTML, JQuery, Javascript)

Edit:

Я не могу добавить образец кода, поскольку звуковые элементы все добавляемые динамически PHP, так это пустой файл до этого.

+0

Возможно, образец кода, который у вас есть, был бы замечательным. –

+0

Это звучит как вопрос без усилий. Пожалуйста, разместите код, чтобы продемонстрировать, что у вас есть стартовая идея того, что вы хотите, мы не можем написать код для вас. – Marquizzo

ответ

1

на основе @ Лиам-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);   
      }       
     }); 


    }); 
}); 

Я просто слепо закодированы это. Если бы кто-то разработал и почему это работает, я был бы признателен.

+0

audioElements - это последовательный массив jQuery каждого из элементов тега HTML5

+0

@ LiamSchauerman Нет ха-ха Я получаю эту часть о рекурсии (но спасибо). Мне было интересно, почему это требует, чтобы обе функции работали должным образом, хотя они по сути делают то же самое. – gregyjames

+0

все, что вам нужно для вызова внутри вашего готового блока, - playNext (index) –

2

Вы можете сделать это, сохранив каждый аудиоэлемент в очереди. Допустим, вы сохраняете каждый элемент в массиве 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); 
Смежные вопросы