Показать сообщение отдельно
  #1 (permalink)  
Старый 14.05.2009, 16:08
Аватар для keysi_
Интересующийся
Отправить личное сообщение для keysi_ Посмотреть профиль Найти все сообщения от keysi_
 
Регистрация: 29.04.2009
Сообщений: 22

Помогите решить проблему
Вот что мне спело средство разработки в опере на мой скрипт:

Код:
ecmascript
http://mysite.ru/
Timeout thread: delay 100 ms
Error:
name: TypeError
message: Statement on line 11: Cannot convert undefined or null to Object
Backtrace:
  Line 11 of linked script http://mysite.ru/catmenu.js: In function hL
    document.getElementById(level).style.visibility = 'hidden';
  Line 1 of unknown script 
    hL("cm_lev2_15")

stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
вот скрипт (прячет элементы через css):
timer_mod=100;
function hL(level)
{
var al=document.getElementById(level).style.visibility;
if (al=='visible')
{
document.getElementById(level).style.visibility = 'hidden';
}
}

// тут я запускаю код чтобы он закрыл все отрытые элементы
//кстати тоже не знаю как как сделать, чобы код выполнялся не до i<20 , а пока не закончатся cm_lev2_+'i'
for (i=1;i<20;i++)
 {
  setTimeout('hL("cm_lev2_'+i+'")', timer_mod);
 }


При всем при этом скрипт работает нормально, просто понадобилось валидность привести в порядок.
Я предполагаю, что он матерится на несуществующий объект c "ID такимто" но понятия не имею как запретить дальнейшее выполнения скрипта если "id такойто" не существует.
В пхп это например делается функцией isset(), но здесь как это сделать я не знаю, причем если "document.getElementById(level)" загонять в переменную, то он начинает выдавать такую же ошибку еще на моменте присвоения.

Последний раз редактировалось keysi_, 14.05.2009 в 16:14.
Ответить с цитированием