2013-04-08 7 views
7

Mam trudności z uzyskaniem dźwięku do pracy z jQuery. Próbowałem tego zarówno w formatach .wav, jak i .ogg. (Firefox 19.0.2)Jak odtwarzać plik audio za pomocą jQuery?

kliknięcie start przycisk plony:

TypeError: buzzer.play is not a function

Nie jestem pewien, czy selektorów jQuery zwraca tablicę, ale Próbowałem przechwytywania plik audio z obu:

var buzzer = $('buzzer'); 

i

var buzzer = $('buzzer')[0]; 

Regardles s, Nie mogę uzyskać elementów dźwiękowych do odtworzenia.

<!DOCTYPE html>  
<html>  
    <head>  
    <meta name="viewport" content="width=device-width, initial-scale=1">  
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>  
</head>  

<body>  

<audio id="buzzer" src="buzzer.ogg" type="audio/ogg">Your browser does not support the &#60;audio&#62; element.</audio>  
<form id='sample' action="#" data-ajax="false">  
    <fieldset>  
    <input value="Start" type="submit">  
    </fieldset>  
</form>  
<script type="text/javascript">  

var buzzer = $('buzzer')[0];  

$(document).on('submit', '#sample', function() {  
    buzzer.play();  
    return false;  
});  

</script>  
</body>  
</html> 
+0

Dlaczego chcesz użyć formularza jako przycisku startowego? – adeneo

+0

Naprawdę powinieneś po prostu użyć 'document.getElementById ('brzęczyk')' tutaj ... W rzeczywistości nie używasz * elementów zawijanych jQuery, po prostu objeżdżasz długą drogę, aby uzyskać natywny element dom. – meagar

Odpowiedz

13

Zapomniałaś hash # w selektor ID:

var buzzer = $('#buzzer')[0]; 

$(document).on('submit', '#sample', function() {  
    buzzer.play();  
    return false;  
});  

And document.getElementById('buzzer') wydaje się bardziej odpowiedni!

bym zmienić HTML:

<audio id="buzzer" src="buzzer.ogg" type="audio/ogg"></audio>  
<input type="button" value="Start" id="start" /> 

i zrobić:

var buzzer = $('audio')[0]; 

A jeśli id ​​buzzer jest:

$('#start').on('click', function() { 
    $('#buzzer').get(0).play(); 
}); 
+0

Lub '$ ('# brzęczyk') [0] .play();' z ładnym 'event.preventDefault();' –

0
var buzzer = document.getElementById("buzzer"); 

Można też to zrobić unikalny (Tak jak powinien) można też to zrobić - nie potrzebuje [0]

var buzzer = $('#buzzer'); 
+1

'document.getElementById (" brzęczyk ");' i btw już sugerowane przez @adeneo –

+0

@roXon .. true .... –

+0

nawet po twojej edycji nie będzie działać tak jak sugerowałeś, masz 'Elements' zamiast' Element' –

0

Używasz identyfikator oznaczyć tag audio w kodzie HTML. Powinieneś dodać #, gdy używasz selektora.

var buzzer = $('#buzzer')[0]; 

poza używasz id do identyfikacji audio, można także określić swój cenny tak:

var buzzer = $('#buzzer'); 

nie trzeba dodać [0] [0] oznacza, zdobądź pierwszy element.