为什么我得到的 position() 左值异常高?

Why am I getting insanely high values for left value of position()?

相关代码是

    this.place = function ()
    {
        var headElem = game.snake.links[0];
        this.bub.css({
            left: headElem.pos.x * game.blockWidth + $('#snake-board-column').css('padding-left'),
            bottom: headElem.pos.y * game.blockWidth
        });
        console.log(this.bub.position()); // TEST
    }

它的目的是使一个单词气泡相对于 SVG rect 元素的位置(如果你想知道为什么我不简单地使用 CSS,那是因为有一个由于游戏逻辑,很多 swapping/replacing 元素)。上面的函数在页面加载和 window 调整大小时调用。我发现奇怪的是我的测试结果

console.log(this.bub.position()); // TEST
当 window 调整大小时,

有时会为 left 生成非常高的值,结果气泡这个词不在屏幕上。我刚刚调整了 window 的大小并得到了

Objectleft: 308.5top: 0__proto__: Object
game.js:290 Objectleft: 23515top: 0__proto__: Object
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 169169}
game.js:290 Object {top: 0, left: 169169}
game.js:290 Object {top: 0, left: 169169}

您可以看到 left 的第一个值是 308.5(正常,预期),后续值不正常。您可以看到它的实际效果 here and the full JS here。知道是什么导致了这些废话吗????

最奇怪的是我测试了个别值

headElem.pos.xgame.blockWidth$('#snake-board-column').css('padding-left') 看起来都很正常。

您可能正在连接字符串而不是添加整数。

headElem.pos.xgame.blockWidth$('#snake-board-column').css('padding-left') 的类型是什么?

例如,我在控制台中试过这个:

var paddingLeft = $('#snake-board-column').css('padding-left');
>> typeof paddingLeft
>> 'string'

尝试 parseInt(),然后再对值求和。