空格键的keydown事件侦听器

时间:2018-07-25 20:08:08

标签: javascript ecmascript-5

我正在做一个微型项目,当我单击鼠标时,该项目就会起作用,每次单击时,屏幕上都会显示出许多圆圈。我正在尝试做同样的事情,但是,不同之处在于何时按下空格键使其执行同样的事情。

由于某种原因,我拥有的代码无法正常工作,我什至在控制台日志记录中也看不到任何内容,而且我也不明白为什么。一些指导将不胜感激。

这是我的html:

<!DOCTYPE html>
<html>
<head>
<title>CircleMaker</title>
    <link href="main.css" rel="stylesheet">
</head>

<body>

    <div id="ball"></div>

</body>


    <script src="mainn.js"></script>
</html> 

css

html{
    box-sizing: border-box;
}

*, *::before, *::after{
    box-sizing: inherit;
}

#ball{
    width: 200px;
    height: 200px;
    top: 200px;
    left: 200px;
    background-color: red;
    border-radius: 100px;
}

JavaScript

var circle = document.getElementById('ball'); 

circle.addEventListener('keydown', circleMultiplier);

function circleMultiplier(e){
    e.preventDefault();

 console.log(e.keyCode);

    if (e.key === 32){

   var divsize = ((Math.random()*100) + 50).toFixed();
    var color = '#'+ Math.round(0xffffff * Math.random()).toString(16);
    var posx = (Math.random() * (document.body.clientWidth - divsize).toFixed());
    var posy = (Math.random() * (document.body.clientWidth - divsize).toFixed());
   var newDiv = document.createElement('div');



   newDiv.style.cssText = 'top:'+posx+'px; left:'+posy+'px; position:absolute; width: 200px; height: 200px;background-color:' +color+ '; border-radius: 100px;';


    document.body.appendChild(newDiv);

    } 

}

当我按下空格键时,它应如下图所示填充:

final

当我单击鼠标时,此代码适用:

var circle = document.getElementById('ball'); 

circle.addEventListener('click', circleMultiplier);

function circleMultiplier(){
    var divsize = ((Math.random()*100) + 50).toFixed();
    var color = '#'+ Math.round(0xffffff * Math.random()).toString(16);
    var posx = (Math.random() * (document.body.clientWidth - divsize).toFixed());
    var posy = (Math.random() * (document.body.clientWidth - divsize).toFixed());
    var newDiv = document.createElement('div');



    newDiv.style.cssText = 'top:'+posx+'px; left:'+posy+'px; position:absolute; width: 200px; height: 200px;background-color:' +color+ '; border-radius: 100px;';


    document.body.appendChild(newDiv);



}

1 个答案:

答案 0 :(得分:1)

您不能在div上监听键盘事件。点击发生在div本身上,因此它会执行相应的回调函数。

对于您的用例,将侦听器附加到文档本身会更有意义。 例如。

document.addEventListener('keyup', function(e){console.log(e.keyCode)});