villiwalla
@villiwalla
HTML-верстка

Скрипт срабатывает, но в консоле ошибка, ругается на x.host, почему?

Есть скрипт который на все внешний урл добавляет атрибут target="_blank". Скрипт срабатывает и добавляет атрибут, но в консоле есть ошибка.
Сам скрипт:
$(document).ready(function () {
			var notMyLink = document.querySelectorAll('#content a');
			
			for(var i = 0; notMyLink.length >= i;i++){
				if(notMyLink[i].hostname != window.location.hostname) {
            	 notMyLink[i].setAttribute("target","_blank");
				}
			} 
			
			return false;
		});


Ошибка:
Uncaught TypeError: Cannot read property 'hostname' of undefined
    at HTMLDocument.<anonymous> (http://domain.ru/uslugi/sig/line:22:20)
    at k (http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js:2:16961)
    at Object.fireWith [as resolveWith] (http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js:2:17719)
    at Function.ready (http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js:2:12434)
    at HTMLDocument.D (http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js:2:9839)
  • Вопрос задан
  • 3158 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега JavaScript
Cannot read property 'hostname' of undefined

Вот в чем дело. А возникает из-за неправильного условия в цикле, вы делаете одну лишнюю итерацию.
Вот так будет верно:
for(var i = 0; i < notMyLink.length; i++)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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