为什么不能动态地改变css style.left和style.top工作

时间:2014-06-01 12:31:15

标签: javascript jquery html css

当我按下按键w,a,s和d时,我试图移动图像,但没有任何事情发生,控制台中没有任何内容出现。任何帮助或建议将不胜感激。

var moveBy = 10;
function moveObj(name, xPix, yPix)
{
    var obj = document.getElementById(name);
    var xp = parseInt(obj.style.left) + xPix;
    var yp = parseInt(obj.style.top) + yPix;
    obj.style.left = xp;
    obj.style.top = yp;
}
$(document).ready(function()
{
    $('body').keydown(function(e)
    {
        if(e.keyCode == 68)
        {
            moveObj('player', moveBy, 0);
        }
        else if(e.keyCode == 65)
        {
            moveObj('player', -moveBy, 0);
        }
        else if(e.keyCode == 87)
        {
            moveObj('player', 0, -moveBy);
        }
        else if(e.keyCode == 83)
        {
            moveObj('player', 0, moveBy);
        }
    });
});

2 个答案:

答案 0 :(得分:1)

您是否在播放器对象上设置了position: relative

移动玩家需要这样做。如果您将其设置为static,则不会移动。

答案 1 :(得分:0)

将其放在moveObj中,看看它是否真正被调用:console.log(arguments);。使用单位设置新值,即obj.style.left = xp + 'px';。同时确保您更改位置的元素具有position属性,您可能正在寻找position: absolute;。将HTML添加到帖子中会有所帮助。