在过去的 3 个小时里,我一直坐在这里思考并搜索一种方法,让矩形(div 元素)在按下按钮时来回移动(使用 javascript)。它正在移动,但后来我试图监控碰撞,但没有成功。它说完全是垃圾,所以我将代码简化为:
$(document).on('keyup', function(e){
var SQposition = $("#SQbody").position();
var SQleft = SQposition.left;
var SQtop = SQposition.top;
//Go left D or left arrow key
if(e.keyCode == 68 || e.keyCode == 39) {
console.log("Fired");
$("#SQbody").css({
"left": (SQleft + 10) + "px",
});
}
});
无论我在哪里监视变量SQleft
,它总是会触发 0,然后显然是 10,依此类推。奇怪的是,使用像 console.log("Fired");
这样的东西从 1 开始,然后是 2,依此类推。
我做错了什么?
更新:“向左走”的意思是“向右走”,我编码时是凌晨 3 点 xD
解决方案:我自己解决了这个问题,方法是将+=
放入括号中
并将变量 SQleft 记录到控制台后返回。
工作代码如下所示:
$(document).on('keyup', function(e){
var SQposition = $("#SQbody").position();
var SQleft = SQposition.left;
var SQtop = SQposition.top;
if(e.keyCode == 68 || e.keyCode == 39) {
$("#SQbody").css({
"left": (SQleft += 10) + "px",
});
console.log("Fired " + SQleft);
return SQleft;
}
});
最佳答案
http://codepen.io/p2227/pen/GppvOE
它是否错过了position:absolute;
??
关于Javascript 位置变量无法正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514194/