Показать или спрятать DIV



Тема довольно исхоженная, но древняя. Почему “НО”? Потому что попытка тупо нагуглить решение дала россыпи и развалы кода ещё со времён IE4. Понятно, что эти примеры теперь работают не так как надо. Прогресс не стоит на месте, и браузеры вместе с ним. Однако.

Нужный код найти удалось, и чтобы опять не потерять описываю его здесь. Теперь принято играть атрибутом display.
Чтобы сделать его невидимым ему присваивают none, чтобы отобразить присваивают block. А дальше дело техники:

В стилях:

.div_container{
        ....................
	display : none; /* сделать DIV для начала невидимым */
/*	display : block;  хотя можно и видимым */
}

В странице:

<input type='button' value='Открыть DIV' 
        onclick="toggle_visibility('my_div')">
<div id='my_div' class='div_container'> 
   БЛА-БЛА-БЛА-БЛА
   <input type='button' value='Закрыть DIV' 
         onclick="toggle_visibility('my_div')">
</div>" ;

А ещё в HEAD страницы добавить функцию на Javascript:

<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
//-->
</script>

Эту функцию писал не я. Я её честно взял использовал и перепечатал. Если бы я знал автора – я бы поставил линк, но к сожалению этот скрипт так расползся по сети, что первоисточника уже не найти ((

Пока всё. Думаю-таки сегодня разродиться новой версией тестера хостеров =)

Посты по теме:

  1. Blueprint CSS framework или Полосатые матрасы
  2. Доступ к директориям без индекса

Категории Веб-программирование |
автор: altesack / Вторник, Март 17, 2009 / 2 комментов »

2 комментов

    а visibility: hidden не прокатывает для старых IE?

    Даже интересно стало, решил испытать. Попробовал тупо заменить display на visibility, block на visible, none на hidden.

    На FF3 и IE6 работает нормально )))
    А старее и не надо

    Одно только отличие:
    visibility: hidden – блок спрятан, но занимает пространство.
    display: none – блок даже не генерируется.