@MoonMay

Тестовое задание по Js, почему выдает ошибку?

В общем получил я тестовое задание от одной компании, у них на сайте нужно написать скрипт заставляющий элемент 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
  • Вопрос задан
  • 493 просмотра
Пригласить эксперта
Ответы на вопрос 1
lazalu68
@lazalu68
Salmon
Вроде всё работает
3d3cae1cab22435eabcb9fb02483fb1f.gif

Вероятно это не ваш код и вы не знаете как он работает, т.к. мне на адаптацию кода понадобилось несколько секунд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
29 нояб. 2024, в 16:58
1000 руб./за проект
29 нояб. 2024, в 16:42
15000 руб./за проект