javascript - 为什么 Javascript addEventListener 不执行任何操作?

标签 javascript dom-events

我正在尝试编写一个脚本,使用箭头键和 Javascript 事件监听器在蓝色框内移动橙色框。当我运行该页面时,没有任何反应。我尝试在控制台中查看,但它根本没有给我任何输出。我确信我错过了一些小东西,但我一生都无法弄清楚。任何建议都会很棒!

var orange = document.getElementById("orange");
orange.addEventListener("onkeydown", move, false);
function move(e);
    			
e = e || window.event;
    
   if(e.keyCode == '38'){ //up
    	if(parseInt(orange.style.top) > '0'){
    		orange.style.top = parseInt(orange.style.top) - 5;
    	}
   } else if (e.keyCode == '40'){ //down
    	if(parseInt(orange.style.top) < '425'){
    		orange.style.top = parseInt(orange.style.top) + 5;
    	}
   } else if (e.keyCode == '37'){ //left
    	if(parseInt(orange.style.top) > '0'){
    		orange.style.left = parseInt(orange.style.left) - 5;
    	}
   } else if (e.keyCode == '39') { //right
    	if(parseInt(orange.style.left) < '425') {
    		orange.style.left = parseInt(orange.style.left) + 5;
    	}    
   }
}
    	
#blue{
    background-color: blue;
    position: relative;
    height: 500px;
    width: 500px
}
#orange{
    background-color: orange;
    position: absolute;
    width: 75px;
    height: 75px;
};
 <div id="blue">
     <div id ="orange" style="left: 30px; top:30px;"></div>
 </div>
    

最佳答案

您有几个问题:

1) 事件是keydown不是onkeydown (除非您直接添加到对象:(例如 orange.onkeydown )

2) Top 以像素为单位,而不仅仅是一个整数 - 您需要添加 + 'px'到您的主要更改: orange.style.top = parseInt(orange.style.top) + 5 + 'px'

其他说明:

  • 将事件监听器放在窗口上可能会更好,因为它将具有焦点,但我不知道 - 没有对此进行测试。
  • e.keyCode是数字,而不是字符串
  • 正如 @bmceldowney 提到的,您的函数声明中有语法错误

代码的工作版本:https://jsfiddle.net/kkhkL065/

关于javascript - 为什么 Javascript addEventListener 不执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280426/

相关文章:

javascript - Google Analytics 代码返回 'Undefined Function"错误

javascript - contenteditable,在文本末尾设置插入符(跨浏览器)

javascript - 如何在 promise 内触发点击事件(在文件类型输入上)?

javascript - 无法使用 Angular 服务处理 onbeforeunload 事件

javascript - 模糊的 Mechanical Turk 错误消息

javascript - 如果未设置 cookie 且未选择任何输入,则在 10 秒后隐藏登录表单

javascript - 使用纯 JavaScript 获取不包含数字的元素

javascript - 如何检测新全局变量的创建?

javascript - onChanged 事件未从 iframe 中的输入字段触发

javascript - 如何检测窗口是否真的在 IE8 标准模式下调整了大小?