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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Div show/hide, артефакты в опере 
:(
    Опции темы
Koresh
Дата 1.8.2006, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток. Имеется такая проблема: при скрытии и повторном открытии слоя, наблюдаются проблемы с перерисовкой. А именно, остаются следы на нижележащих элементах страницы. Div отображаю и показываю с помощью изменения style.display. Положение слоя не статическое (не absolute). В чём дело???
PS
Фрагмент кода не привожу из-за его простоты и потому что я тут чего только уже не лепил.. на данный момент он представляет из себя следующее smile :
Код

function ShowHide2()
                       {      
                            dir2.style.visibility=='hidden';  

                            if (dir2.style.display=='none')
                            {  
                            setTimeout('dir2.style.display="inline"',50); 
                            setTimeout('dir2.style.visibility="visible"',50); 
                            }   
                            else  
                            {
                            setTimeout('dir2.style.display="none"',50); 
                            setTimeout('dir2.style.visibility="hidden"',50);
                            }
                       }


Заранее спасибо.
PM MAIL   Вверх
Sardar
Дата 1.8.2006, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Если проблема в Опере ниже 7.5, то это не лечиться (в часности 6 версии).

Код малость не корректный и не эффективный, перепишем:
Код
function ShowHide(obj) {
   var showObject= function() {
        obj.style.display = "inline";
        obj.style.visibility = "visible";
   }

   var hiddeObject= function() {
        obj.style.display = "none";
        obj.style.visibility = "hidden";
   }

   return function(show) {
        setTimeout((show || (show !== false && obj.style.display == "none"))? showObject: hiddeObject, 50);
   }
}

//создаём собственный ShowHidde для dir2
//таким макаром можно насобирать ShowHiddeN для любых обьектов
var ShowHide2 = ShowHide(dir2);
//далее просто
ShowHide2(); //по текущему состоянию
ShowHide2(true); //или на прямую true - показать, false - скрыть


Просто увидел ShowHidde2, dir2, прикинул copy/paste для 1...N обьектов, ужастнулся... smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Koresh
Дата 1.8.2006, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ужаснулся мож и правильно, правда там не copy\paste а генерируется php скриптом, но всё равно изврат smile Спасибо за ответ, сейчас буду проверять...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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