我该如何解决TypeError

时间:2019-05-26 06:17:18

标签: javascript

未捕获的TypeError:无法读取null的属性'addEventListener'     在SpinBox.addEvent(spinbox3.js:28)     在新的SpinBox(spinbox3.js:9)     在spinbox3.js:68

我个人正在研究发展。 我试图建立一个类并引用该方法。 但是问题继续出现,无法解决。 当错误作为未定义的函数重复出现或无法读取属性时,我不知道问题所在。


class SpinBox{
  constructor(element, value, min, max) {
    this.init(element, value, min, max)
    this.addEvent()
  }

  init(element, val, min, max) {
    this.upButton = element.querySelector('.plus-button');
    this.dwButton = element.querySelector('.minus-button');
    this.textInput = element.querySelector('.text-box');

    this.setDefaultValue(val);
    this.setMinValue(min);
    this.setMaxValue(max);
  }

  addEvent() {
    this.mousedownUpButton = this.mousedownUpButton.bind(this);
    this.mousedownDwButton = this.mousedownDwButton.bind(this);
    this.mosueupButton = this.mosueupButton.bind(this);
    this.focuseoutTextBox = this.focuseoutTextBox.bind(this);

    this.upButton.addEventListener('mousedown', this.mousedownUpButton);
    this.dwButton.addEventListener('mousedown', this.mousedownDwButton);
    this.upButton.addEventListener('mouseup', this.mosueupButton);
    this.dwButton.addEventListener('mouseup', this.mosueupButton);
    this.textInput.addEventListener('blur', this.focuseoutTextBox);

  }

  mousedownUpButton(){}

  mousedownDwButton(){}

  mosueupButton(){}

  focuseoutTextBox(){}

...
}

let spinbox01 = new SpinBox(document.getElementById('spinbox-01'), 200, 100, 300);

1 个答案:

答案 0 :(得分:0)

将以下所有内容的“元素”更改为“文档”:

this.upButton = element.querySelector('.plus-button');
    this.dwButton = element.querySelector('.minus-button');
    this.textInput = element.querySelector('.text-box');

您正在尝试在文档或窗口中搜索该元素。