Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2012, 20:34
Аватар для Ankh
Новичок на форуме
Отправить личное сообщение для Ankh Посмотреть профиль Найти все сообщения от Ankh
 
Регистрация: 20.07.2011
Сообщений: 9

функция и несуществующий id
Всем доброе время суток,
работаю c JavaScript относительно недавно и столкнулся со следующей проблемой:
Предположим, есть вот такой кусок:
Код:
window.onload = function () {
	First();
	Second();
	Third();
}
Функция First() нам не интересна, а вот функция Second():
Код:
function Second() {
	var any_value = document.getElementById('pages').getElementsByTagName('a');
	if (any_value != undefined) {
           /* какое-либо действие */
	}
}
Так вот, на одной из нескольких страниц элемента с id='pages' не существует, и функция Third() (следующая за Second()) не выполняется. То, что я балбес, я подозреваю, но в чем моя ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2012, 20:38
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от Ankh
на одной из нескольких страниц элемента с id='pages' не существует
и тогда document.getElementById('pages') возвращает null, у которого нет методов. Но в вашем коде следом идет сразу вызов getElementsByTagName и вылетает исключение (см. консоль)

if (any_value != undefined) { - эта проверка бессмысленна, так как getElementsByTagName всегда возвращает коллекцию
__________________
readOnly
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2012, 20:40
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Сообщение от Ankh
но в чем моя ошибка?
в том что она пытаеться чтото она пытается вызвать у null, а там его не может быть. по этому ошибка, нужно проверку сделать.

function Second() {
if(!document.getElementById('pages')) return;
var any_value = document.getElementById('pages').getElementsByTagName('a');
	if (any_value != undefined) {
           /* какое-либо действие */
	}
}
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2012, 21:20
Аватар для Ankh
Новичок на форуме
Отправить личное сообщение для Ankh Посмотреть профиль Найти все сообщения от Ankh
 
Регистрация: 20.07.2011
Сообщений: 9

Seva1986, спасибо большое!
poorking, спасибо, убрал ненужную проверку.
В итоге код принял такой вид:
Код:
if(!document.getElementById('pages')) return;
	else {
		for (var any_value= document.getElementById('pages').getElementsByTagName('a') ... ) {
                /* действие */
		}
	}
Все работает, еще раз спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2012, 21:49
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Ankh,
document.getElementById('pages')

Выборку почем зря два раза делать незачем. Делайте один раз

var pages = document.getElementById('pages');
if (pages) {
    for (var any_value= pages ... ) {
                /* действие */
    }
}
__________________
readOnly
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 18:00
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 03:01
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 12:47
Не работает функция из подключаемого файла evgenyan jQuery 3 28.10.2010 13:48
Функция которая работает на OnLoad не хочет работать на OnClick libinstyle Элементы интерфейса 6 23.03.2010 00:42