Javascript onkeydown事件只触发一次
Javascript onkeydown event fires only once
我的onkeydown函数只触发一次,但我希望它在每次按键时都会触发。按下箭头键时,div对象应该以连续运动的方式移动。
<html>
<style type="text/css">
#Rectangle{
height:40px;
width:40px;
background-color:red;
position:absolute;
}
</style>
<script type="text/javascript">
function start() {
var box = document.getElementById("Rectangle");
document.onkeydown = function(e){
e = e || window.event;
switch(e.which){
case 38: //down
box.style.top -= 10;
break;
case 40: //up
box.style.top += 10;
break;
}
}
}
</script>
<body onload="start()">
<div id="Rectangle"></div>
</body>
</html>
需要防止parseInt()的NaN结果:
case 38: //down
box.style.top = ((parseInt(box.style.top, 10) || 0) - 10) + 'px';
break;
case 40: //up
box.style.top = ((parseInt(box.style.top, 10) || 0) + 10) + 'px';
break;
top有单位,您的数学错误
case 38: //down
box.style.top = ( parseInt(box.style.top, 10) - 10 ) + "px";
break;
case 40: //up
box.style.top = ( parseInt(box.style.top, 10) + 10 ) + "px";
break;
更新
我没有让你有一个js错误,所以你需要做:
<script type="text/javascript">
function start() {
var box = document.getElementById("Rectangle"), func = function(e){
e = e || window.event;
var top = parseInt(box.style.top);
switch(e.which){
case 38: //down
box.style.top = (top - 10) + "px";
break;
case 40: //up
box.style.top = (top + 10) + "px";
break;
}
};
document.onkeyup = func(e);
}
</script>
尝试这个
document.onkeypress = function() {
//insert your code here
alert("key pressed!");
};
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- Javascript onkeydown事件只触发一次
- document.onkeydown不工作,或者只工作一次
- onKeyDown处理函数只工作一次