【问题标题】:Event Javascript with sound when I press a key当我按下一个键时有声音的事件 Javascript
【发布时间】:2019-11-16 17:37:43
【问题描述】:

我使用datakey在我按下触摸时发出声音。

你能解释一下为什么我的代码不起作用吗?

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>day1 javascript</title>    
        <link rel="stylesheet" href="style.css">
        <link rel="stylesheet" href="minireset.css">
    </head>

    <body>

        <div class="keys">
            <div class="key" data-key="65"><kbd>A</kbd><span class="sound"><br/>Clap</span></div>
            <div class="key" data-key="90"><kbd>Z</kbd></div>
            <div class="key" data-key="69"><kbd>E</kbd></div>
            <div class="key" data-key="82"><kbd>R</kbd></div>
            <div class="key" data-key="84"><kbd>T</kbd></div>
            <div class="key" data-key="89"><kbd>Y</kbd></div>
            <div class="key" data-key="85"><kbd>U</kbd></div>
            <div class="key" data-key="73"><kbd>I</kbd></div>
            <div class="key" data-key="79"><kbd>O</kbd></div>
            <div class="key" data-key="80"><kbd>P</kbd></div>
        </div>

        <audio data-key="65" src="sound/clap.wav"></audio>

        <script>
            window.addEventListener('keydown', function(e){
                var key=e.keyCode;
                const audio = document.querySelector('audio[data-key=' +key+']');
                if (!audio)  return;

                audio.play();
            });

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

我有这个错误:

index.html:30 Uncaught DOMException: Failed to execute 'querySelector' on 'Document': 'audio[data-key=65]' 不是一个有效的选择器。

【问题讨论】:

    标签: javascript html dom-events keycode


    【解决方案1】:

    你需要像这样添加额外的引号:

    document.querySelector('audio[data-key="' +key+'"]')
    

    【讨论】:

    • 非常感谢您的快速回答,它的工作,是的,我忘了双引号有一个愉快的周末
    【解决方案2】:

    您的查询选择器的结果是,

    document.querySelector('audio[data-key=' + key +']');
    // audio[data-key=45]
    

    这里你缺少 '' 的值,所以你的代码应该是这样的,

    document.querySelector('audio[data-key="' + key +'"]');
    // audio[data-key="45"]
    

    【讨论】:

      【解决方案3】:

      试试看这两个答案

      Playing audio with Javascript?

      How to register document.onkeypress event

      也许你应该有这样的东西:

      var audio11 = new Audio('audio_file.mp3');
      var audio12 = new Audio('audio_file.mp3');
      var audio13 = new Audio('audio_file.mp3');
      
      
      document.addEventListener("keydown", keyDownTextField, false);
      
          function keyDownTextField(e) {
            var keyCode = e.keyCode;
            if(keyCode==12) {audio12.play();}
            if(keyCode==11) {audio13.play();}
            if(keyCode==110) {audio110.play();}       
            else {audio12.play();}
      }
      

      取决于我实际使用了多少自动文件Switch Case

      我对键码帮助不大:http://gcctech.org/csc/javascript/javascript_keycodes.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-16
        • 1970-01-01
        • 1970-01-01
        • 2022-08-05
        • 2012-03-14
        • 1970-01-01
        相关资源
        最近更新 更多