@DenKuzmin17

Почему не срабатывает строка "this.sliderPoint.on("click", function () {"?

Полный код:

Должен переключаться слайд, при нажатии .slider-point
При клике на .slider-point берётся занчение из data-id и подставляется в CurrentImg, потом должна отрабатывать функция ScrollImages(), но ничего не происходит.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Потому что контекст потеряли. Правильно будет так:

this.sliderPoint.on('click', e => {
  this.currentImg = e.target.dataset.id;
  this.scrollImages(this.currentImg, this.speed);
});

Ещё исправить создание разметки самих кнопок тоже надо - data-id неправильные, да и в целом дичь какая-то. Делайте так:

[...Array(count)].map((n, i) => `<div class="slider-point" data-id="${i}"></div>`).join('')


ИЛИ

Можно вообще не использовать data-атрибут для указания номера слайда:

Array(count).fill('<div class="slider-point"></div>').join('')

А вычислять его в обработчике клика:

this.currentImg = $(e.target).index();
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
/....... поменяйте кусок  на этот...  this внутри не тот ! Чтобы передать нужный контекст внутрь следует сохранить его в другой переменной.
  let that = this;
    this.sliderPoint.on("click", function () {
      that.scrollImages( this.dataset.id - 1, that.speed);
    });


со слайдером раньше дел не имел , но внутри this.sliderPoint.on this уже не тот! )).
Отсюда, имхо, надо и плясать.

Рабочий вариант :
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы