После загрузки страницы, как только элементы "инициализировались", свойство
[ Element ].style.display, если не было указано явно, будет
пустой строкой:
Код:
<script>
window.onload = function()
{
var node = document.getElementById('dummy');
alert('#' + node.style.display + '#'); // Покажет ##
}
</script>
<div id="dummy"></div>
И следующий код будет возвращать ложь всегда, за исключением тех случаев, когда мы намеренно установим это свойство в "undefined":
Код:
document.getElementById(element_id).style.display == undefined
Можно привести исходную функцию примерно к такому виду:
Код:
function toggle(id)
{
var node = document.getElementById(id), s;
if(!node) return;
s = node.style;
s.display = (s.display != 'none' ? 'none':'');
}
Стоит обратить внимание, что свойству display намеренно не присваивается значение 'block'. У столбца таблицы, например, это значение должно быть 'table-cell', и в поддерживающих браузерах может сбиться верстка.
Лучший вариант, конечно, использовать css и менять только имя класса.