2014-03-18 84 views
5

我嘗試了下面的代碼,在某些時候播放JavaScript中的聲音但沒有成功,聲音只播放一次,這是什麼問題?如何在JavaScript中循環聲音?

for(var i = 0; i < errors; i++){ 
    PlaySound3(); 
} 

功能:

function PlaySound3() { 
    var audioElement = document.getElementById('beep'); 
    audioElement.setAttribute("preload", "auto"); 
    audioElement.autobuffer = true;  
    audioElement.load(); 
    audioElement.play(); 
}; 

HTML代碼:

<audio id="beep"> 
    <source src="assets/sound/beep.wav" type="audio/wav" /> 
</audio> 
+0

我認爲基本上是你AREN」等待聲音完成。 for循環運行速度非常快,您只能聽到最後一個。嘗試在「PlaySound」之後稍稍等待或使用事件來檢測播放完成時。 –

+0

你的建議是什麼?如何在聲音之間延遲? – user3427977

回答

5

如果你想播放的聲音無限使用的標籤音頻屬性loop

<audio id="beep" loop> 
    <source src="assets/sound/beep.wav" type="audio/wav" /> 
</audio> 

編輯

如果你想經過3次停止循環,添加事件偵聽器:

HTML:

<audio id="beep"> 
    <source src="assets/sound/beep.wav" type="audio/wav" /> 
</audio> 

JS:

var count = 1 
document.getElementById('beep').addEventListener('ended', function(){ 
    this.currentTime = 0; 
    if(count <= 3){ 
     this.play(); 
    } 
    count++; 
}, false); 
+0

我想循環聲音只是某些時間不是永遠 – user3427977

+0

當你想停止循環,用javascriptp將屬性'loop'改爲false。 – R3tep

+0

好主意,但如何做到這一點? – user3427977