Estoy tratando de hacer que se reproduzca un sonido cuando se hace clic en un botón. Aquí está la función que estoy tratando de usar:
function sound(){ var audio = new Audio("button.wav"); audio.play(); }y luego tengo esto en la parte inferior del archivo:
document.getElementById("convert").onclick = function() { sound(); };Sé que el código funciona porque si pongo las 2 líneas de código dentro de la función de sonido dentro de otra función que realiza un cálculo al hacer clic en el botón, se reproduce el sonido. ¿Por qué el código solo funciona cuando se agrega a una función existente, pero no como propia?
Supongo que por "su propio" te refieres a esto:
document.getElementById("convert").onclick = sound(); En este caso, está asignando el valor devuelto de sound() a la propiedad onclick del elemento. Si desea que se llame al sound cuando se haga clic en el botón, elimine el paréntesis:
document.getElementById("convert").onclick = sound;Manifestación:
function sound(){ var audio = new Audio("https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"); audio.play(); } document.getElementById("convert").onclick = sound; <button id="convert">Play</button>