@whiteleaf

Как исправить «Uncaught TypeError: undefined is not a function»?

Здравствуйте!
Я вот уже на протяжении нескольких недель изучаю JavaScript и при написании вот этого скрипта у меня вылезла вот такая вот ошибка: "Uncaught TypeError: undefined is not a function".
Подскажите мне, пожалуйста, почему она появилась и как мне ее исправить.

Заранее спасибо!

//  Assigning of global variables. Looking for the objects in the document.
var systemMenu = document.getElementById('system-menu');
var systemIn = document.getElementById('sign-in').getElementsByTagName('a')[0];
var signInForm = document.getElementById("signInForm");
var wrongEmail = document.getElementById('wrong-email');
var loginInput = document.getElementById('login-email');
var wrapper = document.getElementById('wrapper');
var pressed;


// Assigning EventListener to menu which is supported by all new and even ancient IE<9(realized with the special function AttachEven)
(window.addEventListener) ? wrapper.addEventListener('click',menuToggle,true) : wrapper.attachEvent('onclick',menuToggle);	

function menuToggle(e){
	var target = e.target || e.srcElement;

	// Closing or hiding elements
	

	while(target != systemMenu){

		if(target.getAttribute('id') == 'system-menu') return;

		

		if(target.getAttribute('id') == 'support'){
			alert('You\'ve just pressed Support button!');
		}

		if(target.getAttribute('id') == 'lang'){
			alert('You\'ve just pressed Language button!');
		}

		if(target.getAttribute('id') == 'sign-in'){
			alert('You\'ve just pressed SignIn button!');
		}

		if(target.tagName == 'LI'){
			pressed = target;
		}
		
		target = target.parentNode;
	}

	if(target == wrapper){
		alert('looped');
	}


}
  • Вопрос задан
  • 9998 просмотров
Решения вопроса 1
barkalov
@barkalov
Используйте дебаггер. Chrome -> F12 -> Sources. Ставите брейкпоинт на первой строке функции (кликом по номеру строки) и поехали F10, F10, F10...
А ещё в консоли (Chrome -> F12 -> Console) видно номер строки, на которой ошибка случилась. Справа от текста ошибки.

Ошибка в том, что в цикле (while) target "поднимается" по дереву к предкам div -> ... -> body -> html -> #document, а у последнего нет функции .getAttribute()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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