Javascript 为什么位置()的左值会变得异常高?
相关的代码是Javascript 为什么位置()的左值会变得异常高?,javascript,jquery,html,css,game-physics,Javascript,Jquery,Html,Css,Game Physics,相关的代码是 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.
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
}
如果您想知道为什么我不简单地使用CSS,那么它的目的是相对于SVG rect元素创建一个单词气泡的位置,这是因为由于游戏逻辑,有很多元素的交换/替换。在页面加载和窗口调整大小时调用上述函数。我觉得奇怪的是我的测试结果
console.log(this.bub.position()); // TEST
在调整窗口大小时,有时会为left生成非常高的值,因此“气泡”一词不在屏幕上。我只是调整了窗口的大小,然后
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}
您可以看到左侧的第一个值是308.5正常值,预期值,后续值不正常。你可以看到它的作用和完整的JS。知道是什么导致了这些胡说八道吗
最奇怪的是,我测试了个人的价值观
headElem.pos.x,game.blockWidth和$'snake-board-column'。css'padding-left',它们看起来都很正常 您可以连接字符串而不是添加整数 headElem.pos.x、game.blockWidth和$'snake-board-column'.css'padding-left'的类型是什么 例如,我在控制台中尝试了以下操作:
var paddingLeft = $('#snake-board-column').css('padding-left');
>> typeof paddingLeft
>> 'string'
在对值求和之前尝试parseInt。typeof headElem.pos.x=number game.js:301 typeof game.blockWidth=number game.js:302$'snake-board-column'.css'padding-left'=string