Как заставить мою кнопку воспроизводить новый аудиофайл, когда я нажимаю ее снова?

#javascript #html #button #audio

#язык JavaScript #HTML #кнопка #Аудио

Вопрос:

Я создал веб-сайт в неокитайсе, который воспроизводит аудиофайл всякий раз, когда вы нажимаете кнопку «СГЕНЕРИРОВАТЬ ЗВУК».

Самое забавное, что он воспроизводит один и тот же звук всякий раз, когда я нажимаю его снова. Единственный способ получить новое аудио-это перезагрузить саму страницу. Есть ли способ изменить аудиофайл без необходимости перезагрузки страницы?

вот моя кнопка:

 lt;a href="#" onclick="test.play()"gt; GENERATE MUSIC lt;/agt;  

и вот как я заставляю его воспроизводить случайные аудиозаписи из массива:

 const audioList = [  "audio1.mp3",   "audio2.mp3",   "audio3.mp3",   "audio4.mp3"];  var test = new Audio(); var audioNum = Math.floor(Math.random() * audioList.length); test.src = audioList[audioNum];  

Ответ №1:

Попробуйте это:

 const audioList = [  "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",  "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3",  "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3",  "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-4.mp3" ];  const audio = new Audio()  function generateMusic() {  const audioNum = Math.floor(Math.random() * audioList.length);  audio.src = audioList[audioNum];  audio.load()  audio.play() } 
 lt;a href="#" onclick="generateMusic()"gt; GENERATE MUSIC lt;/agt; 

Что я изменил в вашем коде:

  • Создайте функцию, которая будет выбирать новую песню каждый раз, когда вы нажимаете кнопку.
  • Установите эту песню как .src и .play() она.
  • Метод load() повторно загружает аудиоэлемент.