Estoy tratando de usar un botón para pausar el elemento de audio, y la función funciona bien, excepto la función de alert() . La alerta simplemente aparece y permanece en la parte superior del sitio web para siempre.
aquí está mi código HTML
<button id="threeSecTimer">3s</button> <figcaption>Fire</figcaption> <audio controls loop> <source src="xxx" type="audio/mpeg" /> Your Browser doesn't support the audio </audio> <figcaption>Forest</figcaption> <audio controls loop> <source src="xxx" type="audio/wav" /> Your Browser doesn't support the audio </audio>aquí está js
var threeSecTimer = document.getElementById("threeSecTimer"); var allMusic = document.getElementsByTagName("audio"); function pause3s(e) { setTimeout(function () { for (var i = 0; i < allMusic.length; i++) { if ((allMusic[i] = e.target)) { allMusic[i].pause(); allMusic[i].currentTime = 0; alert("time is up!"); } } }, 3000); } threeSecTimer.addEventListener("click", pause3s);```Ha perdido un = en su condición if, cambie (allMusic[i] = e.target) a (allMusic[i] == e.target)
Su condición, (allMusic[i] == e.target) nunca será cierta ya que e.target apunta al botón 3s, y allMusic[i] es el control de audio. Eso suponiendo que haya cambiado el = único a un ==, de lo contrario, la condición siempre será verdadera, que tampoco es lo que desea, pero haría que el botón de alerta apareciera dos veces, una para cada control de audio. Y cuando se hace clic en la alerta, debería desaparecer, al menos lo hizo para mí cuando probé su código.
¿Quizás pueda verificar HTML5 si se está reproduciendo audio? para orientar el audio que se está reproduciendo.