2016-07-06 112 views
0

我想淡出所有播放音頻。我試過getElementsByTagName但它似乎不適用於音頻音量。我有幾個音頻,並將數字命名爲id。檢查我的HTML和JS代碼。Javascript全部音頻淡出

HTML

<input type="text" size="3" value="1" id="numtext" style="font-size:700pt" > 

<audio id=1> 
    <source src=BGM/a.mp3> 
</audio> 

<audio id=2> 
    <source src=BGM/b.mp3> 
</audio> 

<audio id=3> 
    <source src=BGM/c.mp3> 
</audio> 

JS

function fade() { 

     var x = document.getElementById('numtext').value; 
     var sounds = document.getElementById(x); 

     var newVolume = (sounds.volume) - 0.07; 

     // Check if the newVolume is greater than zero 
     if(newVolume >= 0){ 
      sounds.volume = newVolume; 
     } 
     else{ 
      // Stop fade 
     sounds.pause(); 
     sounds.currentTime = 0; 
     sounds.volume = 1; 

      clearInterval(interval); 
     } 

} 

任何提示的歡迎。

回答

0

你可以嘗試選擇所有的聲音的元素,如認爲:

var audios = document.getElementsByTagName('audio'); 

然後你做任何你想要的音頻列表

for(i=0;i<audios.length;i++){ 
     //Do your stuff here on audios[i] 
    } 

希望它幫助了!

+0

我不明白你寫的第二個代碼。什麼是代碼? –

+0

它的一個簡單的For。它選擇音頻列表中的第i個元素(HTML中的所有音頻列表) 然後,您必須逐個修改它們。 ex:audios [i] .volume = 0; – DavidPi

0

當你想操縱多個元素,你應該使用類。

例子:

比方說,我們給我們的所有音頻標籤類的audio-list ..

<audio class="audio-list" id="1">...</audio> 

使用案例:

var audioList = document.querySelectorAll('.audio-list'); 

然後:

document.querySelectorAll() will return an array list of elements 

您需要遍歷音頻元素列表與此for-loop

for(var i = 0; i > audioList.length ; i++){ 

    //fadeOut your audio  
} 

另一個建議是,如果你玩的多的聲音同時你會 最有可能找到的音頻API來在其音頻緩衝支持和控制多個音頻通道docs在這裏方便:https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer