javascript show\hide ошибка в IE

S
На сайте с 06.08.2008
Offline
130
825

В шаблоне подключается javascript который показывает\прячет блок.

Код javascript:

window.onload= function() {
document.getElementById('showhide').onclick = function() {
openbox('box', this);
return false;
};
};
function openbox(id, showhide) {
var div = document.getElementById(id);
if(div.style.display == 'block') {
div.style.display = 'none';
showhide.innerHTML = 'Показать график';
}
else {
div.style.display = 'block';
showhide.innerHTML = 'Спрятать график';
}
}

Блок который прячется\показывается:

<a id="showhide" href="#">Показать график</a>
<div id="box" style="display: none;">'.show_stat().'</div>

Во всех браузерах работает нормально, но вот в ИЕ выдает ошибку при переходе на другую страницу.

Т.е. функция работает, но ошибка вылетает когда переходим по любой ссылке..

Сведения об ошибке на веб-странице

Сообщение: 'document.getElementById(...)' - есть null или не является объектом
Строка: 2
Символ: 2
Код: 0
URI-код: http://site.ru/showhide.js

Кто сталкивался, как поправить?

LovelAss
На сайте с 05.06.2009
Offline
96
#1

Либо добавить на страницу элемент с id="showhide", либо отключить скрипт на этой странице, либо прописывать onclick в качестве атрибута элемента.

S
На сайте с 06.08.2008
Offline
130
#2
Либо добавить на страницу элемент с id="showhide", либо отключить скрипт на этой странице

Таких страниц много, 1 шаблон используется на нескольких страницах, поэтому оба эти варианта не пойдут..

прописывать onclick в качестве атрибута элемента

Можно поконкретнее?

---------- Добавлено 03.08.2012 в 08:55 ----------

Попробовал через онклик вот так:

<script>
function look(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}
</script>

<a href="#" onClick="look(\'div1\'); return false;">показать/скрыть</a>
<div id="div1" style="display:none">
Скрытый текст
</div>

На других страницах ошибка исчезла, но появляется ошибка при клике в скрытом блоке. Дело в том, что там подгружается график + кнопки, которые обрабатывает javascript.

S
На сайте с 06.08.2008
Offline
130
#3

Никто не подскажет?

IL
На сайте с 20.04.2007
Offline
435
#4
spiderbuber:
Никто не подскажет?

1. Использовать JQuery (не удивлюсь, если библиотека уже подключена)

2. проверять наличие нужного блока на странице

if (document.getElementById('showhide')!=null)

document.getElementById('showhide').onclick...
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
S
На сайте с 06.08.2008
Offline
130
#5

1. Жквэри не юзаю.

2. Спасибо. Реально помог!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий