Скрытие-показ элементов

 
0
 
JavaScript
ava
SolRus | 08.10.2011, 23:50
высмотрел на сайте этот код:


function hide(element) {
// создадим элементу свойство, в которое запишем текущий дисплей
element.realDisplay = element.currentStyle ? element.currentStyle["display"]
: getComputedStyle(element, null)["display"];
// и скроем
element.style.display = "none";
}
function show(element) {
// берём записанный в realDisplay дисплей и устанавливаем
// либо, ставим по умолчанию для данного элемента (сбрасываем)
element.style.display = element.realDisplay || "";
}
function toggle(element) {
// если элемент отображается
if(!(element.offsetHeight == 0 && element.offsetWidth == 0)) {
// скроем
hide(element);
} else {
// если скрыт, покажем
show(element);
}
}

toggle(document.getElementById("test"));

однако если изначально (поставил в CSS) элемент имеет свойство display:none; то не работает.
в функции show "" не поставит свойство в изначальное такое как предполагается у элемента (если оно none) в w3c, например:
div - блочный элемент т.е. имеет по w3c значение display:block;
span - display:inline;

так вот как узнать у элемента какое у него по умолчанию w3c свойство display ?
document.defaultView им можно получить? если да, то как? smile

Kommentare (1)
ava
SolRus | 10.10.2011, 19:03 #
плохо, что никто не ответил... решил так:

function getRealDisplay(element) {
return element.currentStyle ? element.currentStyle["display"] : getComputedStyle(element, null)["display"];
}
function show(element) {
if (element.realDisplay) element.style.display = element.realDisplay;
else {
var testElem = document.createElement(element.nodeName);
document.body.appendChild(testElem);
element.style.display = getRealDisplay(testElem);
document.body.removeChild(testElem);
}
}
function hide(element) {
element.realDisplay = getRealDisplay(element);
element.style.display = "none";
}

function toggle(element) {
(element.offsetHeight == 0 && element.offsetWidth == 0) ? show(element) : hide(element);
}

проверено на ff 7.0.1 и ie 8.0.7601.17514
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  SolRus
advanced
Absenden