este código funciona perfectamente para reproducir archivos de audio aleatorios cuando se hace clic en un botón, lo que quiero. el único problema es que quiero que el audio actual se detenga cuando se vuelve a hacer clic en el botón para que no se reproduzca sobre el siguiente archivo. cualquier idea sobre cómo lograr esto sería apreciada!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <audio id="sound0" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio> <audio id="sound1" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio> <audio id="sound2" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio> <audio id="sound3" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio> <button id="button">Click To Play</button> $( document ).ready(function() { function playSound(){ var pattern = [], tone; pattern.push(Math.floor(Math.random() * 4)); tone = "#sound" + pattern[0]; //$(tone).trigger('play'); //uncomment to play //$(tone).get(0).play(); //uncomment to play $(tone)[0].play(); //comment to turn off } $("#button").click(playSound); });new Audio() y reproduzca ese. const sounds = [ "https://s3.amazonaws.com/freecodecamp/simonSound1.mp3", "https://s3.amazonaws.com/freecodecamp/simonSound2.mp3", "https://s3.amazonaws.com/freecodecamp/simonSound3.mp3", "https://s3.amazonaws.com/freecodecamp/simonSound4.mp3" ]; const audio = new Audio(); function playSound(){ const rand = Math.floor(Math.random() * sounds.length); audio.src = sounds[rand]; audio.play(); } document.querySelector("#button").addEventListener("click", playSound); <button id="button">Click To Play</button>Si desea escuchar "finalizado" y reproducir otro archivo de audio, simplemente use:
audio.addEventListener("ended", playSound);Una solución que no sea jQuery:
var sound0 = document.getElementById("sound0"); var sound1 = document.getElementById("sound1"); sound1.onplay = function() { sound0.pause(); } Lo que hace este código es que cada sound1 que el audio del sonido 1 comienza a reproducirse, sound0 el audio del sonido 0.