键代码在javascript中不起作用

键代码在javascript中不起作用,javascript,keyboard-events,Javascript,Keyboard Events,按下向右和向左箭头时,不会移动长方体。 如果你能提供帮助,请在评论中发表 我看到两个问题: 弗斯特 您正在将数值添加到字符串中,这将导致concatation。例如: ((num+el.style.left)+“px”)相当于10+0px+px,这会产生一个类似100px的字符串。这不是有效的CSS值 我建议使用将现有样式值从字符串转换为数字: el.style.left=parseInt(el.style.left)+num+“px” 有关进一步参考,请参阅 第二 在使用left、right、

按下向右和向左箭头时,不会移动长方体。 如果你能提供帮助,请在评论中发表

我看到两个问题:

弗斯特 您正在将数值添加到字符串中,这将导致concatation。例如:
((num+el.style.left)+“px”)
相当于
10+0px+px
,这会产生一个类似
100px
的字符串。这不是有效的CSS值

我建议使用将现有样式值从字符串转换为数字:
el.style.left=parseInt(el.style.left)+num+“px”

有关进一步参考,请参阅

第二 在使用
left
right
top
bottom
CSS定义之前,需要先创建元素。左侧的注释(例如)仅适用于“定位元素”

下面,我使用了
position:absolute
,但任何有效的position值都可以

有关进一步参考,请参阅

工作示例
window.addEventListener(“keydown”,testkey,false);
var el=document.getElementById(“播放器”);
函数changex(num){
el.style.left=parseInt(el.style.left)+num+“px”;
}
函数更改(num){
el.style.top=parseInt(el.style.top)+num+“px”;
}
功能设置位置(x,y){
el.style.left=(x+“px”);
el.style.top=(y+“px”);
}
功能测试键(e){
开关(如钥匙代码){
案例37:changex(-10);break;
案例38:changey(-10);break;
案例39:changex(10);break;
案例40:changey(10);break;
违约:
}
}
setpos(0,0)
#播放器{
位置:绝对位置;
}
测试
我发现两个问题:

弗斯特 您正在将数值添加到字符串中,这将导致concatation。例如:
((num+el.style.left)+“px”)
相当于
10+0px+px
,这会产生一个类似
100px
的字符串。这不是有效的CSS值

我建议使用将现有样式值从字符串转换为数字:
el.style.left=parseInt(el.style.left)+num+“px”

有关进一步参考,请参阅

第二 在使用
left
right
top
bottom
CSS定义之前,需要先创建元素。左侧的注释(例如)仅适用于“定位元素”

下面,我使用了
position:absolute
,但任何有效的position值都可以

有关进一步参考,请参阅

工作示例
window.addEventListener(“keydown”,testkey,false);
var el=document.getElementById(“播放器”);
函数changex(num){
el.style.left=parseInt(el.style.left)+num+“px”;
}
函数更改(num){
el.style.top=parseInt(el.style.top)+num+“px”;
}
功能设置位置(x,y){
el.style.left=(x+“px”);
el.style.top=(y+“px”);
}
功能测试键(e){
开关(如钥匙代码){
案例37:changex(-10);break;
案例38:changey(-10);break;
案例39:changex(10);break;
案例40:changey(10);break;
违约:
}
}
setpos(0,0)
#播放器{
位置:绝对位置;
}
test
changex()
changey()
函数中,您试图在数字和字符串之间进行计算
num
作为数字输入,但
el.style.left
是字符串“0px”。将
parseInt()
放置在
el.style.left
周围,如下所示:

el.style.left = ((num + parseInt(el.style.left)) + "px");
还要确保您的
player
元素通过CSS应用了
position:absolute

changex()
changey()
函数中,您尝试在数字和字符串之间进行计算
num
作为数字输入,但
el.style.left
是字符串“0px”。将
parseInt()
放置在
el.style.left
周围,如下所示:

el.style.left = ((num + parseInt(el.style.left)) + "px");

还要确保你的
player
元素通过CSS应用了
position:absolute

谢谢你解决了这个问题我投票给你的答案是为了给你一些声誉谢谢你投票给你这个问题我投票给你的答案是为了给你一些声誉你为什么把e.keyCode和a.keyCode做比较类型为coersion的字符串???只需输入
e.keyCode==37
。为什么要将e.keyCode与具有类型协同关系的字符串进行比较???只需输入
e.keyCode==37