Funkcja tworząca obiekt audio i odtwarzająca dźwięk, zmienna audio jest globalna ustawiona na null
let audio = null; // deklarujemy zmienną, w której będziemy przechowywać obiekt Audio
function playSoundOnce(path) {
//audio = document.getElementById("myAudio"); // pobranie starym obiektu audio
//audio.pause(); // zatrzymanie odtwarzania
//audio.src = path;
// funkcja przyjmuje ścieżkę do dźwięku jako argument
// audio = document.getElementById("myAudio");
if (audio !== null) { // sprawdzamy, czy dźwięk jest już odtwarzany
audio.pause(); // jeśli tak, przerywamy odtwarzanie
audio.currentTime = 0; // ustawiamy czas odtwarzania na początek
}
audio = new Audio(path); // tworzymy nowy obiekt Audio z podaną ścieżką
audio.src = path;
audio.load();
audio.play(); // odtwarzamy dźwięk
audio.remove();
}
W pliku html ścieżki są zamieniane według następującego przykładu, jednak dźwięk jest odtwarzany tylko z pierwszej ścieżki, po odświeżeniu strony wszystko wraca do normy, problem w tym, że chciałbym bez odświeżania strony odtwarzać dźwięk z drugiej ścieżki
<div class="word1 wrong" data-audio-path="files/words/mp3/burn.mp3">
<div class="word1 checked" data-audio-path="files/words/mp3/tie.mp3">
<!-- Jeśli kliknie się klasę word2 -->
<div class="word2 wrong" data-audio-path="files/words/mp3/cat.mp3">
<div class="word2 wrong" data-audio-path="files/words/mp3/dog.mp3">
<!-- Jest analogicznie odtwarza się tylko pierwsza ścieżka -->
Tutaj jeszcze element kodu, myślę nieznaczący w tym wypadku, ale daje dla lepszego podglądu sytuacji
for (let i = 0; i < 6; i++) {
let audioPath = data[i];
$('.word'+i).each(function() {
$('.word').removeAttr('data-audio-path');
$(this).attr('data-audio-path', audioPath);
});
$('.word'+i).click(function() {
let audioPath = $(this).data('audio-path');
playSoundOnce(audioPath);
});
}
Myślę, że przyczyną problemu jest to, że element audio zostaje w pamięci przeglądarki, próbowałem dawać audio = null; audio.remove(); nie skutkowało, w jaki sposób można usunąć stary obiekt audio, abym mógł odtworzyć dźwięk z nowej ścieżki pliku, która została dodana bez odświeżania strony?