@lorentso

Как решить проблему 'Cannot read property 'classList' of undefined'?

Учусь верстать страничку с валидацией формы. Копирую с урока на ютубе, вроде бы один в один - проверял, но срипт не работает.
По замыслу скрипт должен проверять инпуты с классом _req и добавлять класс _error полям не прошедшим валидацию, подсвечивая красным цветом, но ничего не проихсодит. Браузер выдает ошибку:

Cannot read property 'classList' of undefined'

Скрипт на даном этапе выглядит так
"use strict"


document.addEventListener('DOMContentLoaded', function () {
	const form = document.getElementById('form');
	form.addEventListener('submit', formSend);

	async function formSend(e) {
		e.preventDefault();
		

		let error = formValidate(form); 

		}

		function formValidate(form) {
		let error = 0;
		let formReq = document.querySelectorAll('._req');

		for (let index = 0; index < formReq.length; index++) {
			const input = formReq[index];
			formRemoveError('input');

			if (input.classList.contains('_email')) {
				if (emailTest(input)) {
					formAdError(input);
					error++;
				}
			
			} else if(input.getAttribute("type") === "checkbox" && input.checked === false) 	{
				error++;
			
			} else {
				if(input.value === '') {
					formAddError(input);
					error++;
				}
			}
		
		}
	}

	
	function formAddError(input) {
		input.parentElement.classList.add('_error');
		input.classList.add('_error');
	}

	function formRemoveError(input) {
		input.parentElement.classList.remove('_error');
		input.classList.remove('_error');
	}

	function emailTest(input) {
		return !/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/.test(input.value);
	}

});


Подключаю скрипт перед закрытием тега body, в наличии проверочного класса _req у соотвествующих элементов убедился. В чем ошибка -- понять не могу.
  • Вопрос задан
  • 4085 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
formRemoveError('input');
Здесь кавычки не нужны
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы