На Keydown Event должно воспроизводиться соответствующее аудио - PullRequest
0 голосов
/ 29 мая 2018

В этом коде при нажатии события клавиатуры «A» его код клавиши 65 должен соответствовать атрибуту> audio tag-key data-key = "65" и воспроизводиться.Но когда я запрашиваюSelector, он возвращает мне ноль в журнале консоли.

<html>
    <head>
        <title>Drumkit</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale = 1.0"> 
        <link rel="stylesheet" href="main.css">
    </head>
    <body>
        <audio data-key="65" src="audio/clap.wav"></audio>
        <audio data-key="83" src="audio/hihat.wav"></audio>
        <audio data-key="68" src="audio/kick.wav"></audio>
        <audio data-key="70" src="audio/openhat.wav"></audio>
        <audio data-key="71" src="audio/boom.wav"></audio>
        <audio data-key="72" src="audio/ride.wav"></audio>
        <audio data-key="74" src="audio/snare.wav"></audio>
        <audio data-key="75" src="audio/tom.wav"></audio>
        <audio data-key="76" src="audio/tink.wav"></audio>
      
        <script>
            window.addEventListener('keydown',function(e){
            const audio = document.querySelector('audio[data-key="${e.keyCode}"]');
           
            
            console.log(audio);
            });

        </script>
    </body>
</html>

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Как указывает @ CodeF0x, вам нужно использовать строку шаблона ES6.Следовательно, вам нужно использовать обратные кавычки или обратные кавычки ` вместо одинарных кавычек ', которые можно найти по ключу ниже esc key

Однако строка не будетПравильно интерполируйте в аргументах вызова функции в вашем случае функцию querySelector().

Следовательно, сохраните вывод строки шаблона в переменной и передайте эту переменную в вызове функции, и это решит вашу проблему.

Просто используйте как это

<html>
    <head>
        <title>Drumkit</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale = 1.0">
        <link rel="stylesheet" href="main.css">
    </head>
    <body>
        <audio data-key="65" src="audio/clap.wav"></audio>
        <audio data-key="83" src="audio/hihat.wav"></audio>
        <audio data-key="68" src="audio/kick.wav"></audio>
        <audio data-key="70" src="audio/openhat.wav"></audio>
        <audio data-key="71" src="audio/boom.wav"></audio>
        <audio data-key="72" src="audio/ride.wav"></audio>
        <audio data-key="74" src="audio/snare.wav"></audio>
        <audio data-key="75" src="audio/tom.wav"></audio>
        <audio data-key="76" src="audio/tink.wav"></audio>

        <script>
            window.addEventListener('keydown',function(e){
            var selector = `audio[data-key="${e.keyCode}"]`;
            const audio = document.querySelector(selector);

            console.log(audio);
            });

        </script>
    </body>
</html>

Вывод: Как вы хотели

enter image description here

Пожалуйста, обратитесь Получение буквально с помощью строк шаблона ES6 для получения дополнительной помощи

0 голосов
/ 29 мая 2018

Для использования ES6 Template-String вам необходимо использовать `вместо '.

Возможно, вы также захотите прочитать эту документацию.

<html>
    <head>
        <title>Drumkit</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale = 1.0"> 
        <link rel="stylesheet" href="main.css">
    </head>
    <body>
        <audio data-key="65" src="audio/clap.wav"></audio>
        <audio data-key="83" src="audio/hihat.wav"></audio>
        <audio data-key="68" src="audio/kick.wav"></audio>
        <audio data-key="70" src="audio/openhat.wav"></audio>
        <audio data-key="71" src="audio/boom.wav"></audio>
        <audio data-key="72" src="audio/ride.wav"></audio>
        <audio data-key="74" src="audio/snare.wav"></audio>
        <audio data-key="75" src="audio/tom.wav"></audio>
        <audio data-key="76" src="audio/tink.wav"></audio>
      
        <script>
            window.addEventListener('keydown',function(e){
            const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
           
            
            console.log(audio);
            });

        </script>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...