Поскольку у вас есть анимация, примененная к классу jump
, значение offsetTop
фактически изменяется при добавлении этого класса. Таким образом, вы не должны зависеть от offsetTop
, и вместо этого вы должны использовать независимую переменную, которую вы установили сами, имея offsetTop
в зависимости от it . Сначала установите его на offsetTop
, но затем увеличивайте его, а не увеличивайте offsetTop
, а затем установите для него top
. Это, вероятно, сбивает с толку, поэтому позвольте мне опубликовать некоторый код.
Вы добавили бы это вокруг начала вашего скрипта.
var positionHorseUp;
Затем это к вашему событию загрузки.
positionHorseUp = horse[0].offsetTop;
Затем вы удалите эту строку ...
var positionHorseUp = horse[0].offsetTop;
... и замените ту, которая устанавливает положение top
с этим.
horse[0].style.top = ++positionHorseUp + 'px';
Таким образом, ничто не зависит от значения offsetTop
, и вы можете безопасно применять эту анимацию без прерывания сохраненной позиции лошади.
(Также используйте requestAnimationFrame
, а не setTimeout
.Это более эффективно, потому что оно вызывается на каждой лакокрасочной рамке. Добавьте соответствующий код, чтобы компенсировать неопределенные интервалы времени между средами браузера.)
Я использовал следующий код для создания таблицы «Заметки»
CREATE TABLE Notes
(id
int (11) NOT NULL AUTO_INCREMENT, created
отметка времени NOT NULL DEFAULT CURRENT_TIMESTAMP при обновлении CURRENT_TIMESTAMP, [ 113] текст, content
текст, public
tinyint (1) DEFAULT NULL, userid
int (11) NOT NULL, beerid
int (11) NOT NULL, первичный ключ (id
), ключ [119 ] (userid
), KEY beerid
(beerid
)) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARSET DEFAULT = latin1;
удалено "CONSTRAINT Notes_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (userid
) Ссылки [1115 ] (id
), ОГРАНИЧЕНИЕ Notes_ibfk_2
ИНОСТРАННЫЙ КЛЮЧ (beerid
) ССЫЛКИ Beers
(id
) "