0

Нужно с помощью setInterval и метода moveRight сделать анимацию движения машинки nissan (которая нижняя на картинке) вправо. Решил что написать будет правильно:

setInterval(nissan.moveRight, 2000);

Не понимаю в чем проблема. Пробовал переписать метод moveRight с заменой this именно на nissan, все работало.

Car.prototype.moveRight = function () {
        nissan.x +=5;

        nissan.carElement.css({
            left: nissan.x,
            top: nissan.y
        });
    };

Но нужно рабочую версию с this. Надеюсь на вашу помощь.

Ошибка: Uncaught TypeError: Cannot read property 'css' of undefined at Car.moveRight (попробуйте1.html:32)

Код взят из учебника (Morgan_N._JavaScript_dlya_detej._Samouchitel_po_programmirovaniyu).

ошибка

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Гонки</title>
</head>
<body>
    <script src="../jquery-3.2.1.js"></script>
    <script>
        var Car = function (x,y) {
            this.x = x;
            this.y = y;
        };

        Car.prototype.draw = function () {
            var carHtml = '<img src="car.png">';

            this.carElement = $(carHtml);

            this.carElement.css({
                position: "absolute",
                left: this.x,
                top: this.y
            });

            $("body").append(this.carElement);
        };

        Car.prototype.moveRight = function () {
            this.x +=5;

            this.carElement.css({
                left: this.x,
                top: this.y
            });
        };

        var tesla = new Car(20, 20);
        var nissan = new Car(100, 200);

        tesla.draw();
        nissan.draw();

        setInterval(nissan.moveRight, 2000);

    </script>
</body>
</html>

0 Answers0