В наши дни с отображением/скрытием javascript я предпочитаю использовать атрибуты HTML5 data-*.
Это уже можно использовать в браузерах, отличных от HTML5, с помощью функций getAttribute и setAttribute.
Я быстро проверил его на IE7, Chrome и Opera, и, похоже, он работает.
http://jsfiddle.net/ThJcb/
function showHide(shID) {
var exDiv = document.getElementById(shID);
if(exDiv.getAttribute("data-visible") != 'false'){
document.getElementById(shID+'-show').style.cssText = ';height:auto;opacity:1;visibility:visible;';
document.getElementById(shID).style.cssText = ';height:0;opacity:0;visibility:hidden;';
exDiv.setAttribute("data-visible" , 'false');
} else {
document.getElementById(shID+'-show').style.cssText = ';height:;opacity:0;visibility:hidden;';
document.getElementById(shID).style.cssText = ';height:auto;opacity:1;visibility: visible ;';
exDiv.setAttribute("data-visible" , 'true');
}
}
Это позволяет вам определить состояние div без проверки значений CSS.
EDIT: как указано в комментариях, в ссылке на скрытие была опечатка (onlick вместо onclick), из-за чего казалось, что вышеуказанный jsfiddle работал, а не работал. По крайней мере, не совсем так, как я сделал ошибку в логике, установив для «видимых данных» значение false вместо true.
Вот обновленный jsfiddle: http://jsfiddle.net/ThJcb/4/ (фрагмент javascript выше обновлен также)
person
jussinen
schedule
16.06.2012