2016-07-05 119 views
0

當我按下鍵盤上的「向上箭頭」按鈕時,我希望我的音頻淡出並停止。它似乎淡出,但是,它再次出現並永不止息。javascript音頻淡出

music.html:48 Uncaught IndexSizeError:未能在'HTMLMediaElement'上設置'volume'屬性:提供的卷(-0.1)超出範圍[0,1]。

我是Javascript的初學者。

這是我的代碼。

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> 

的Javascript

<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和1之間。由於你只降低音量你可以檢查它是否大於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; 
     } 

} 

我已經這裏刪除了不必要的代碼。