2017-01-31 14 views
1

ファイルにリンクされているサウンドであるキーボードイベントを作成するために、キーを押したいと思っています。サウンドsrcは正しいですが、私が知っていることから、私のJavaScriptもそうです。 HTMLファイルにサウンドを追加することについて私が気づいていないステップがありますか?JSのキーボードイベントで音声が再生されませんか?

マイコード:あなたは反転を使用する必要があります

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <!-- Required meta tags --> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 

     <!-- Bootstrap CSS --> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> 
     <link rel="stylesheet" href="style.css" type="text/css"> 
    </head> 
    <body> 

     <div class="container"> 
      <div class="row"> 

       <div class="col-12"> 
        <div data-key="83" class="key"> 
         <kbd>s</kbd> 
         <span class="sound">clap</span> 
        </div> 
       </div> 

      </div> 
     </div> 

     <audio data-key="83" src="jap/big_taiko.wav"></audio> 



     <script> 
      window.addEventListener('keydown', function(e) { 
       const audio = document.querySelector('audio[data-key="${e.keyCode}"]'); 
       if (!audio) return; 
       audio.play(); 
      }); 
     </script> 
    </body> 
</html> 

答えて

2

は、文字列の補間のための`の代わりに、単一引用符'を刻みます。

const audio = document.querySelector('audio[data-key="${e.keyCode}"]'); 

文字列で変数を置き換えるために$表記は `ない 'で動作しますが、これはES6です:私は、問題は、この行であることを想像

`audio[data-key="${e.keyCode}"]`

+0

でquerySelector audio[data-key="${e.keyCode}"]を変更し、これはトリックをした、ありがとうございました。なぜこれが尋ねられますか?私はJavaScriptの倒立したティックをまったく知らなかった。 – YoungCoder

+0

@YoungCoder、一重引用符 '' 'や二重引用符' ''は変数を評価せずに文字列の一部として扱いますが、複雑で複雑な問題を解決するためにバックティックが導入されました文字列の連結。 "開始" + a + '中間' + b + 'endstring''vs '' id $ {a}中$ {b} endstring' '。 あなたはそれについて[ ](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals) – inker

+1

素晴らしい、ありがとう! – YoungCoder

1

:次のセレクタを使用します表記では、キーワードconstと `。

const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`); 

またはその代わりwindow.addEventListenerのES5バージョン

var audio = document.querySelector('audio[data-key="' + e.keyCode +'"]'); 
2

使用document.addEventListener

はまた、私は'audio[data-key="'+e.keyCode+'"]'

document.addEventListener('keydown', function(e) { 
 
    const audio = document.querySelector('audio[data-key="'+e.keyCode+'"]'); 
 
       if (!audio) return; 
 
       audio.play(); 
 
      });
<audio data-key="83" src="http://www.stephaniequinn.com/Music/Allegro%20from%20Duet%20in%20C%20Major.mp3"></audio>

関連する問題