Tengo un par de pistas que están programadas por JavaScript. Solo un problema que necesito solucionar y esto es cuando reproduzco una pista que funciona bien y luego cuando quiero reproducir la otra pista. Quiero detener el primero y luego reproducir el otro.
const audioPlayers = document.querySelectorAll(".audio-player"); audioPlayers.forEach((audioPlayer) => { const audioUrl = audioPlayer.dataset.url; const audio = new Audio(audioUrl); . . .audio.onplay = () => audioPlayer.classList.add("playing"); audio.onpause = () => audioPlayer.classList.remove("playing"); audio.onloadeddata = () => audioPlayer.classList.remove("loading"); // audio.ondurationchange = showTimeDuration; audio.onended = () => (audio.currentTime = 0); audio.ontimeupdate = () => { const { currentTime } = audio; const currentTimeDisplay = formatTimeToDisplay(currentTime); updateCurrentTimeDisplay(currentTimeDisplay); updateCurrentPercent(); if (currentTime === 0) { showTimeDuration(); } }; } start(); }); <div class="audio-player" data-url="sound/1.mp3" dir="ltr"> <div class="player"> <button type="button" class="btn-play"> <span class="material-icons icon-play">play_arrow</span> <span class="material-icons icon-pause">pause</span> <span class="material-icons icon-loop">loop</span> <span class="material-icons icon-error">error_outline</span> </button>Si está intentando detener la reproducción de audio actual y reproducir nuevos datos de audio. ¿Qué tal la solución a continuación? Simplemente llame a la función stopAllAudio() antes de reproducir el siguiente audio y todo el audio que se reproduzca antes debería detenerse.
function stopAllAudio() { var sounds = document.getElementsByTagName('audio'); for (i = 0; i < sounds.length; i++) sounds[i].pause(); };