Вы опечатали ID, вот и все.
В var cloudTwo = document.getElementById('SecondMovingCloud');
, SecondMovingCloud
должно быть secondMovingCloud
.
Javascript, CSS и HTML с учетом регистра.
Не уверен, что JSFiddle показывает JS ошибки, но когда я скопировал все в Codepen, он показал мне ошибку Uncaught TypeError: Cannot read property 'className' of null
. Это означает, что document.getElementById()
вернул ноль, что привело меня к вашей орфографической ошибке. Просто поделюсь некоторыми мыслями о том, как отлаживать.
Просто заметил, что вы также забыли изменить имена переменных в нескольких местах. Возможно, вы написали это один раз и скопировали, но забыли изменить имена переменных. Вот исправленная версия.
var lastTopFirstCloud;
var lastTopSecondCloud;
window.addEventListener('scroll', function(event) {
var cloudOne = document.getElementById('firstMovingCloud');
var cloudTwo = document.getElementById('secondMovingCloud');
var firstCloudTop = cloudOne.getBoundingClientRect().top;
var secondCloudTop = cloudTwo.getBoundingClientRect().top;
if (cloudOne.className.indexOf('moving') === -1 && firstCloudTop < lastTopFirstCloud) {
cloudOne.classList.add('moving');
}
lastTopFirstCloud = firstCloudTop;
if (cloudTwo.className.indexOf('movingTwo') === -1 && secondCloudTop < lastTopSecondCloud) {
cloudTwo.classList.add('movingTwo');
}
lastTopSecondCloud = secondCloudTop;
});
Кроме того, для этого вам действительно следует использовать массивы, а не писать код дважды. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array