2016-07-06 15 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

あなたが書いた2番目のコードについてはわかりません。どのようなコードですか? –

+0

そのシンプルなFor。これは、オーディオリストのi番目の要素を選択します(htmlのすべてのオーディオのリスト) 次に、それらを1つずつ変更する必要があります。 例: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を見つけることですオーディオバッファリングのサポートと複数のオーディオチャンネルの制御に便利です。https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer

関連する問題