TypeError: Не удается прочитать свойство '0' из неопределенного в JQuery, невозможно получить доступ к переменным класса в функции класса? - PullRequest
0 голосов
/ 01 ноября 2019

Ошибка 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...