В Javascript у меня есть функция, которая создает аудиоэлемент с createElement("audio")
, и начинаю воспроизведение в цикле без использования appendChild()
, я имею в виду, не добавляя его в DOM.Созданный элемент хранится в переменной, назовем его music1
:
music = document.createElement("audio");
music.addEventListener("loadeddata", function() {
music.play();
});
music.setAttribute("src", music_Source);
Что я хотел бы сделать, это изменить воспроизводимую музыку, если это возможно, используя ту же функцию, и сохранить элементв той же переменной.
Что я делаю, это перед кодом выше:
if(typeof(music) == "object") {
music.pause();
music = null;
}
Но: если я удаляю music.pause()
, первая музыка продолжает играть, а вторая начинает игратьв то же время, что заставляет меня думать, что первая музыка всегда где-то в документе / в памяти.Кроме того, music = null
кажется бесполезным.Я не хочу использовать jQuery.
У вас есть идея, как правильно удалить первую музыку, удалить элемент и т. Д.?
На самом деле, комментарий Кенниса верен, япопытался просто изменить атрибут src и не изменять переменную «music» (не устанавливая для него значение null и не воссоздавать элемент), и, похоже, это тоже работает.Итак, для записи: Для каждого источника, меняющегося здесь, есть функция:
if(typeof(music) != "object") {
//audio element does not exist yet:
music = document.createElement("audio");
music.addEventListener("loadeddata", function() {
music.play();
});
}
music.setAttribute("src", music_Source);