使用Javascript,我有一個函數可以創建一個帶有createElement("audio")
的音頻元素,並開始循環播放,而不使用appendChild()
,我的意思是沒有將其附加到DOM。 創建保存在一個變量中的元素,讓我們把它叫做music1
:如何在不附加到DOM的情況下正確刪除html5音頻?
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屬性,而不是修改「音樂」變量(既沒有設置它爲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);
您已經回答了您的問題! 'music.pause()'在刪除對象之前。 – 2012-01-14 19:58:14
當你準備開始新歌曲時,你是否有理由不想改變'src'屬性? – 2012-01-14 20:03:31
@kennis其實,'music.setAttribute(「src」,music_Source);'用第二個音樂的新music_Source再次調用,所以我想這就是你的意思,我改變了src屬性。 @Francis Avila但是我並不確定music.pause()在刪除之前允許以任何適當的方式「刪除」以前的音樂。或者我可能會錯過某些東西,或者我沒有足夠的自我解釋:) – 2012-01-15 00:06:33