2016-07-06 4 views
0

모든 재생중인 오디오를 페이드 아웃하고 싶습니다. getElementsByTagName을 시도했지만 오디오 볼륨이 작동하지 않는 것으로 보입니다. 나는 여러 개의 오디오 파일을 가지고 있는데 나는 이드를 숫자로 명명했다. 내 HTML 및 JS 코드를 확인하십시오.자바 스크립트 모든 오디오 페이드 아웃

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

그것의 간단한. 그것은 오디오 목록에서 i 번째 요소를 선택합니다. (html의 모든 오디오 목록) 그런 다음 하나씩 수정해야합니다. 예 : 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