尝试通过使用开关的情况下,通过相同的javascript函数播放不同的音频


<!DOCTYPE html> 
<html lang="en">
    <head>
        <meta charset="utf-8" />     
  <script>
   var audio;
   function initAudioPlayer() {
    audio = new Audio();
       Eplay = document.getElementById("E");
       Eplay.addEventListener("click", playPause("playE"));
      Aplay = document.getElementById("A");
       Aplay.addEventListener("click", playPause("playA"));
               switch (audio) {
                             case "playE":               
                      audio.src = "sound/Eguitar.mp3";
                                break;
                           case "playA":
                                 audio.src = "sound/A-guitar.mp3";
                               break;                                
                 default:  audio.src = "sound/highE-guitar.mp3";
                         } 
                 function playPause() {
                     if (audio.paused) {
                         audio.play();
                     } else {
                         audio.pause();    
                     }
             }
           }
             window.addEventListener("load", initAudioPlayer);
         </script>
    </head>
    <body>                  
        <div class="guitar">
        <button id="E">E </button>
       <button id="A">A </button>
        </div>
    </body>
</html>
> Blockquote
有人能告诉我我做错了什么吗?我想做一个吉他调音师试图改变音频。

试试这个:你的开关没有任何值,你的函数playPause()传递参数使用。

var audio,Eplay,Aplay;
   function initAudioPlayer() {
    
       Eplay = document.getElementById("E");
       Eplay.addEventListener("click", function(){playPause("playE");});//adding callback
      Aplay = document.getElementById("A");
       Aplay.addEventListener("click",function(){ playPause("playA");});//adding callback
            
               
           }
   function playPause(audio1) {//passing parameter here
	   alert(audio1);
	   audio = new Audio();
	   switch (audio1) {
       case "playE":               
audio.src = "sound/Eguitar.mp3";
          break;
     case "playA":
           audio.src = "sound/A-guitar.mp3";
         break;                                
default:  audio.src = "sound/highE-guitar.mp3";
   } 
     if (audio.paused) {
         audio.play();
     } else {
         audio.pause();    
     }
}
             window.addEventListener("load", initAudioPlayer);
<!DOCTYPE html> 
<html lang="en">
    <head>
        <meta charset="utf-8" />     
  <script>
   
         </script>
    </head>
    <body>                  
        <div class="guitar">
        <button id="E">E </button>
       <button id="A">A </button>
        </div>
    </body>
</html>

switch语句应该在Eplay和Aplay元素的click事件调用的函数中。

在你的事件处理函数调用中,你正在传递字符串"playE"或"playA",所以你需要将该参数添加到函数定义中,以便你可以使用它。试试这样做:

function playPause(note) {
    switch(note) {
        case "playE" : 
            // Set audio src...
        break;
        case "playA" : 
            // Set audio src...
        break;
    }
    // Play or pause audio
}

1)你的playPause函数在它的签名中需要一个参数。例如,function playPause(chord) {

2)您的switch (audio)块将只在页面加载时运行一次。你希望它在每次用户点击播放/暂停按钮时运行,对吧?

将该块移动到playPause()函数

3)修复switch块使用的变量

查看修复了以下问题的代码:

var audio;
function initAudioPlayer() {
    audio = new Audio();
    Eplay = document.getElementById("E");
    Eplay.addEventListener("click", playPause("playE"));
    Aplay = document.getElementById("A");
    Aplay.addEventListener("click", playPause("playA"));
    function playPause(chord) {
         switch (chord) {
            case "playE":               
              audio.src = "sound/Eguitar.mp3";
              break;
            case "playA":
              audio.src = "sound/A-guitar.mp3";
              break;                                
            default:  audio.src = "sound/highE-guitar.mp3";
         } 
         if (audio.paused) {
             audio.play();
         } else {
             audio.pause();    
         }
    }   
}
window.addEventListener("load", initAudioPlayer);

最新更新