@phpcoder81

Почему не срабатывает метод в объекте?

Не вызывается событие. setItem. Проблема в синтаксисе, уверен на 100%, но не пойму как исправить. Помогите исправить.

<div id="block1">
  <input type="button" class="item" value="1">
  <input type="button" class="item" value="2">
  <input type="button" class="item" value="3">
</div>


(function(window){
  
  //конструктор
  window.MyPlugin = function(id){
    this.obj = document.getElementById(id);
    this.buttons = this.obj.getElementsByClassName("item");
    this.myArray = [];
  
    //вешаем на все кнопки событие
    [].forEach.call(this.buttons, function(el){
      el.addEventListener('click', this.setItem);
    });
  }

  MyPlugin.prototype.setItem = function(){
    alert('ok'); //не срабатывает событие)
    //this.myArray.push[this.value];
    //this.showItems();
  };
  
  MyPlugin.prototype.showItems = function(){
    console.log(this.myArray);
  };

})(window);

new MyPlugin("block1");
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Контекст теряете. Замените function(el){ на (el) => {.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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