2016-07-05 3 views
0

키보드의 'Arrow Up'버튼을 누르면 오디오가 페이드 아웃되고 멈추게합니다. 그러나 그것은 다시 나타나고 결코 멈추지 않습니다.자바 스크립트 오디오 페이드 아웃

music.html : 48 Uncaught IndexSizeError : 'HTMLMediaElement'에 'volume'속성을 설정하지 못했습니다. 제공된 볼륨 (-0.1)이 [0, 1] 범위를 벗어납니다.

저는 초보자입니다.

여기 내 코드입니다.

HTML

<body> 

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

<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> 

</body> 

자바 스크립트를

<script language="JavaScript"> 

var interval 
var timeout 

document.onkeydown = function() { 

if(event.keyCode == 38){ 
     var x = document.getElementById('numtext').value; 
      var sounds = document.getElementById(x); 

     interval = setInterval(fade, 200); 

     return; 

     } 
} 

function fade() { 

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

     var timer = setTimeout(function() { 

     window.clearInterval(interval); 
     for(i=0; i<sounds.length; i++) sounds[i].pause(); 
     for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0; 

     }, 2000); 

     timeout = setTimeout(stopFade, 2000); 

} 

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

     for(i=0; i<sounds.length; i++) sounds[i].pause(); 
     for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0; 
     sounds.volume = 1; 

} 

</script> 

을 어떤 조언을?

답변

0

귀하의 페이드 기능은 볼륨이 할당 당신은 볼륨을 거절하고 있기 때문에 그것이 내가했습니다 0보다 큰

var interval 
var timeout 

document.onkeydown = function() { 

    if(event.keyCode == 38){ 
     interval = setInterval(fade, 200); 
    } 

} 

function fade() { 

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

     var newVolume = sounds.volume - 0.1; 

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

} 

을 만약 당신이 단지 확인하실 수 있습니다 0과 1인지 확인해야 여기서 불필요한 코드를 다듬습니다.

관련 문제