Показать сообщение отдельно
  #1 (permalink)  
Старый 31.03.2020, 10:18
Новичок на форуме
Отправить личное сообщение для tone4ka Посмотреть профиль Найти все сообщения от tone4ka
 
Регистрация: 25.11.2019
Сообщений: 7

При спользовании setinterval метод объекта не принимает аргумент
[ js ]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>cars</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script>

var Car=function(x,y){
this.x=x;
this.y=y;
this.draw();
};

Car.prototype.draw=function(){
var carHtml='<img src="http://nostarch.com/images/car.png">';
this.carElement=$(carHtml);
this.carElement.css({
position:"absolute",
left:this.x,
top:this.y
});
$("body").append(this.carElement);
};

Car.prototype.moveRight=function(s){
this.x+=s;
this.carElement.css({
left:this.x,
top:this.y
});
};

Car.prototype.intRight=function(){
setInterval(this.moveRight(10).bind(this),30);// метод moveRight не принимает аргумент, не выполняется bind
};

var tesla=new Car(20,20);
var kia=new Car(100,200);
tesla.intRight();
kia.intRight();
</script>
</body>
</html>
[ /js ]

Если из метода moveRight(s) убрать переменный аргумент s и заменить его фиксированным значением, то все работает, this при использовании setinterval передается с помощью bind, но как только я заменяю значение сдвига координаты x на переменную s- консоль выдает ошибку bind
Ответить с цитированием