Вы устанавливаете свойство стиля на число, а затем пытаетесь перечитать и преобразовать его в строку.Это не работает;top
(и другие) не могут быть числами, поэтому они сохраняют свои прежние значения (""
).
Кроме того, вам необходимо указать единицы измерения ("px", "pt" и т. Д.) При установкестиль, иначе он не будет установлен, даже если это string
.Следовательно, когда вы пытаетесь преобразовать их из числа в строку, вы получаете еще одну пустую строку.
// This returns 1
console.log(document.body.style.top = 1);
// Nevertheless, it didn't work, since this returns ""
console.log(document.body.style.top);
Это не проблема TypeScript, это «проблема» JavaScript (скорее, DOM).
Я предлагаю упростить этот код.Это не просто трудно читать, оно делает много, чего не следует делать - ненужные преобразования, в зависимости от побочных эффектов назначения и т. Д.
Примерно так должно работать:
const top = this.chatScrollTop + this.boxScrollTop;
const marginLeft = this.chatScrollLeft + this.boxScrollLeft;
moveable1.style.top = top.toFixed(0) + "px";
moveable1.style.marginLeft = marginLeft.toFixed(0) + "px";