Javascript keyDown未注册
我的代码有问题,如下所示:Javascript keyDown未注册,javascript,jquery,Javascript,Jquery,我的代码有问题,如下所示: $(document).ready(function() { var currenty = 0; var currentx = 0; $("body").keypress(function(event) { if (event.keyCode === 68) { $(".box").animate({marginLeft: currenty + 30}, 200); currenty += 30; } else if (
$(document).ready(function() {
var currenty = 0;
var currentx = 0;
$("body").keypress(function(event) {
if (event.keyCode === 68) {
$(".box").animate({marginLeft: currenty + 30}, 200);
currenty += 30;
} else if (event.keyCode === 65) {
$(".box").animate({marginLeft: currenty - 30}, 200);
currenty -= 30;
} else if (event.keyCode === 87) {
$(".box").animate({marginTop: currenty + 30}, 200);
currentx += 30;
} else if (event.keyCode === 83) {
$(".box").animate({marginTop: currenty - 30}, 200);
currentx -= 30;
} else {
}
});
});
我对这段代码的问题是,当我按下一个键时,什么也没有发生
编辑:如果我将第一个键代码更改为32(空格键),它似乎可以工作
再次编辑:刚刚解决了我的问题,关键代码是大写字母的位置使用文档而不是正文:
$(document).ready(function() {
var currenty = 0;
var currentx = 0;
$(document).keypress(function(event) {
if (event.keyCode === 68) {
$(".box").animate({marginLeft: currenty + 30}, 200);
currenty += 30;
} else if (event.keyCode === 65) {
$(".box").animate({marginLeft: currenty - 30}, 200);
currenty -= 30;
} else if (event.keyCode === 87) {
$(".box").animate({marginTop: currenty + 30}, 200);
currentx += 30;
} else if (event.keyCode === 83) {
$(".box").animate({marginTop: currenty - 30}, 200);
currentx -= 30;
} else {
}
});
});
改为切换到
keydown
keypress
返回字母d的100而不是68
测试差异。谢谢你的帮助,但这仍然不能解决我的问题,尽管如此,我还是会使用文档来代替。:)你能给我你的html吗?我的身体标签里只有你浏览器控制台中出现的错误。只有event.returnValue不推荐使用。请改用标准的event.preventDefault()。我认为在这里你似乎对
currentx
和currenty
有很多混淆。在后两种情况下,你增加X,但你总是根据你刚刚意识到的y来设置动画。谢谢,不用担心。确保您也在不同的浏览器中进行测试。(我链接的页面非常有用。)