Ошибка TypeError происходит из этой функции
$(this.viewports[count]).attr("src", this.images[this.cur_image_idx]);
Я проверил значение каждой переменной. ни один не определен, например, в функции инициализации у меня та же функция, и она работает
Я не понимаю, почему она не работает внутри функции switchImage.
единственное отличие, которое я вижув том, что функция switchImage вызывается обработчиком события .on click в JQuery
ОБНОВЛЕНИЕ: из недавней отладки я понял, что не могу получить доступ к любой переменной класса из функции switchImage, есть идеи о том, почему это происходит?
это полный код
class gallery_manager
{
constructor(images, button_left, button_right, viewports)
{
this.images = images;
this.images_count = this.images.length -1;
this.cur_image_idx = 0;
this.viewports = viewports;
this.w_len = this.viewports.length;
this.placeholder = "../images/common/placeholder.png";
this.button_left = button_left;
this.button_right = button_right;
this.initialize();
}
initialize()
{
var count = 0;
$(this.viewports[count]).attr("src", this.images[this.cur_image_idx]);
count++;
while(count != this.w_len)
{
this.cur_image_idx++;
if(this.cur_image_idx < this.images_count)
this.cur_image_idx = 0;
$(this.viewports[count]).attr("src", this.images[this.cur_image_idx]);
count++;
}
$(this.button_left).on("click", this.switchImage );
$(this.button_right).on("click", this.switchImage );
}
switchByTimer()
{
}
switchImage(event)
{
var id = event.currentTarget.className;
var count = 0;
if(id == "gallery_button_left")
{
while(count != this.w_len)
{
this.cur_image_idx--;
if(this.cur_image_idx < 0)
this.cur_image_idx = this.images_count;
$(this.viewports[count]).attr("src", this.images[this.cur_image_idx]);
count++;
}
}
else if (id == "gallery_button_right")
{
while(count != this.w_len)
{
this.cur_image_idx++;
if(this.cur_image_idx > this.images_count)
this.cur_image_idx = 0;
$(this.viewports[count]).attr("src", this.images[this.cur_image_idx]);
count++;
}
}
}
}
export default gallery_manager;