Как правильно получить ноду текущего инпута в методе класса и передать в другой метод?
Внутри конструктора вешается обработчик событий на input который при срабатывании вызывает метод check внутри которого должен вызываться метод isValid(this) который в свою очередь должен вернуть ноду текущего input, но вместо этого мне возвращает весь мой класс myClass. Как правильно получить текущий input?
class myClass {
constructor(setting) {
let formEl = document.getElementById(setting.id);
let formFields = formEl.elements;
for (let i = 0; i < formFields.length; i++) {
formFields[i].addEventListener("change", this.check.bind(this);
}
}
isValid(el){
console.log(el)
}
check(){
this.isValid(this)
}
}
Полный пример кода https://codesandbox.io/s/sleepy-moon-m9kr6?file=/src/index.js
Ответы (2 шт):
Автор решения: Vyacheslav Odinokov
→ Ссылка
formFields[i].addEventListener("change", this.checkIt(formFields[i]));
В функции ты используешь this - это не элемент input, это контекст объекта класса.
Передавай в функцию элемент input в аргументе.
isValid(elem) {
console.log(elem);
return true;
}
checkIt(elem) {
this.isValid(elem);
console.log(elem);
}
И bind делать не надо. Контекст объекта у тебя не меняется.