键代码在javascript中不起作用
按下向右和向左箭头时,不会移动长方体。 如果你能提供帮助,请在评论中发表 我看到两个问题: 弗斯特 您正在将数值添加到字符串中,这将导致concatation。例如:键代码在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、
((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
。