@del993788

Как подставить имя класса под массив?

Здравствуйте. Возможно вопрос в заголовке указан не верно, но я чётко сформулировать вопрос не могу... У меня просто не работает так, как я бы хотел(...

Ситуация такая. Есть массив с информацией о положениях X:Y. Выглядит это вот так:
var firstbox = ["-16","13"]
var secondbox = ["-10","11"]
...

В html у объектов у меня по 2 класса:
<div class="box firstbox">...</div>
<div class="box secondbox">...</div>

Есть анимация этих блоков:
$('.box').mousemove(function(event){
	gsap.to($(this), 1, {
	  x:mineclass[0],
	  y:mineclass[1],
	});
});

Я думал, что если в функции анимации прописать, что
var mineclass = this.classList[1];
console.log(mineclass) // вернёт имя класса.

то тогда можно будет обратиться к имени класса, как к массиву:
mineclass[0] // по логике тоже самое secondbox[0]
и у меня будет всё работать, но, как вы уже поняли, не работает у меня них*ена

Что в моём случае можно сделать? Как сделать, чтобы я мог зная класс подцепиться к списку массивов?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@del993788 Автор вопроса
var boxes = {
	firstbox: ["-16","13"],
	secondbox: ["-10","11"]
};

var mineclass = this.classList[1];
console.log(mineclass) // вернёт имя класса.

var box = boxes[mineclass]; // выберет нужный массив из boxes
// тут можно устроить проверку, ведь может и не быть класса,
// который вы только добавили в HTML, но в скрипте ещё не добавили массив
var x = box[0];
var y = box[1];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@StockholmSyndrome
const data = {
  firstbox: ["-16","13"], 
  secondbox: ["-10","11"]
};

$('.box').mousemove(function() {
  const [x, y] = data[this.classList[1]];
  gsap.to($(this), 1, {x, y});
});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы