Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрытие-показ элементов, w3c, toggle, display 
V
    Опции темы
SolRus
  Дата 8.10.2011, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



высмотрел на сайте этот код:

Код

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 



Это сообщение отредактировал(а) SolRus - 8.10.2011, 22:52
PM MAIL Skype   Вверх
SolRus
Дата 10.10.2011, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



плохо, что никто не ответил... решил так:
Код

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
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.