В общем получил я тестовое задание от одной компании, у них на сайте нужно написать скрипт заставляющий элемент id="io" двигаться по орбите вокруг элемента id="jupiter". Как написал интервьюер "Прошу выполнить небольшой тест", в итоге за день я почти никуда не продвинулся. Я написал тестовый скрипт чтоб просто заставить лететь Io вокруг себя же.
function animation(elem,speed,delay,distance) {
var x = 0;
var s = speed * Math.PI / 180;
setInterval(function() {
x += s;
elem.style.left = distance * Math.sin(x) + "px";
elem.style.top = distance * Math.cos(x) + "px";
}, delay);
}
На локалке все работало, заливаю к ним - получаю еррор: Cannot set property 'left' of undefined at eval.
Затем попробовал подвигать jupiter - все работает. Точно также и со вторым скриптом который мне уже помогли написать:
Number.prototype.toRadian = function() {
return this * Math.PI / 180;
};
var animations = [];
handler();
function addAnimate(appendTo,el,speed,radius,angle){
angle = angle || Math.random()*360;
animations.push({
ap:appendTo,
el:el,
speed:speed,
angle:0,
radius:radius
});
}
function handler() {
animations.map(function (el) {
var xCenter = el.ap.offsetLeft + el.ap.offsetWidth / 2;
var yCenter = el.ap.offsetTop + el.ap.offsetHeight / 2;
var w = el.el.offsetWidth;
var h = el.el.offsetHeight;
var x = xCenter - w / 2 + el.radius * Math.sin(el.angle.toRadian());
var y = yCenter - h / 2 + el.radius * Math.cos(el.angle.toRadian());
el.angle = (el.angle + el.speed) % 360;
el.el.style.left = x + 'px';
el.el.style.top = y + "px";
});
requestAnimationFrame(handler);
}
Ситуация идентична... В виду того что я слабо знаком с JS, а JQuery там не используется, можно как то по другому двигать эти элементы? Ошибка всегда идет при попытке сдвига элемента через
elem.style.left and elem.style.top
В гугле однозначного ответа на этот вопрос я не нашел. Не знаю правильно это или нет, но все же добавлю ссылку на их задание:
https://onthe.io/dev