[prg] CSS + JavaScript: различия в обработки вариантов указания стиля
Здравствуйте.
Недавно при создании спойлера столкнулся со странной ситуацией. Мои знания в
области CSS крайне посредственны, поэтому надеюсь мне здесь это объяснят. :)
Идея была не оригинальна и заключалась в том, чтобы посредством JavaScript
динамически менять стиливое значение display между none и block.
Странность заключалась в том, что наблюдалась разное поведение скрипта в
зависимости от способа первоначального задания значения display.
Было рассмотрено два варианта:
1. присвоение контейнеру div, в котором находился текст спойлера, некого id,
а потом в подключённом файле CSS указание
#id_name { display: none }
2. Задание стиля div прямо в коде страницы, то есть
<div id="id_name" style="display: none">
В остальном всё было аналогично в обоих случаях.
Странность заключалась в следующем:
При первом варианте реализации, скрипт не срабатывал при первом нажатии на
кнопку, а начиная со второго, уже каждый раз чётко раскрывал/сворачивал
спойлер. При втором варианте всё работало штатно, то есть спойлер начинал
раскрываться/сворачиваться уже после первого нажатия.
Между строками с равно использовавшийся код JavaScript:
function spoiler(id_spol)
{
var obj = "";
if (document.getElementById) obj = document.getElementById(id_spol).style;
else if (document.all) obj = document.all[id_spol];
else if (document.layers) obj = document.layers[id_spol];
else return 1;
if (obj.display == "") obj.display = "none";
else if (obj.display != "none") obj.display = "none";
else obj.display = "block";
}
Взаимодействие со скриптом было реализовано посредством кнопки:
<input type="button" value="Спойлер" onClick="spoiler('id_name')">
В DOCTYPE декларировался HTML 4.0 Transitional.
Проблема носила кроссбраузерный характер, по крайней мере, на уровне движков
IE, FF и Chrome.
В принципе всё было решено реализацией через второй вариант, но остался
осадок неудовлетворённости.
Если у кого мысли, почему присутствовали такие отличия при разных вариантах
указания стиля?
Успехов. Никита.
Vande omentaina, Nikita!
Я, честно говоря, чего-то не понимаю). Вот этим ты что делаешь?