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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрыть\показать div 
:(
    Опции темы
Flops
Дата 24.2.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

<script type="text/javascript">
var TempId=null;
function show(id){ document.getElementById(id).style.display = 'block';}
function hide(id){ document.getElementById(id).style.display = 'none';}

function ToggleStyle(id){
  if ( document.getElementById(id).style.display == 'none') {
      show(id);
  } else {
      hide(id);
  }
  if (TempId != null)
  hide(TempId);
  TempId=id;
}
</script>

Код

<body>
<div id="d1" style="display: none">1</div>
<div id="d2" style="display: none">2</div>
<div id="d3" style="display: none">3</div>
<input type="button" onclick="ToggleStyle('d1')" value="1">
<input type="button" onclick="ToggleStyle('d2')" value="2">
<input type="button" onclick="ToggleStyle('d3')" value="3">
</body>

Не понимаю в чём проблема кода, дебагер пробегает всё чётко, но происходит следующее
Я Открыва обьект, скрываю его же и открыть опять уже не могу, пока не активирую другой. В чём мб проблема ?

Это сообщение отредактировал(а) Flops - 24.2.2009, 12:29
PM MAIL   Вверх
Soah
Дата 24.2.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Flops @  24.2.2009,  12:20 Найти цитируемый пост)
В чём мб проблема ?

Цитата(Flops @  24.2.2009,  12:20 Найти цитируемый пост)
hide(TempId);

ты все время его скрываешь, убери эти строчки
Код

if (TempId != null)
    hide(TempId);
TempId=id;

PM MAIL   Вверх
Flops
Дата 24.2.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тогда можно попросить совета, как закрывать предыдущий объект?
Код

<script type="text/javascript">
var TempId=null;
function show(id){ document.getElementById(id).style.display = 'block';}
function hide(id){ document.getElementById(id).style.display = 'none';}

function ToggleStyle(id){

  if ( document.getElementById(id).style.display == 'none') {
      show(id);
  } else {
      hide(id);
  }
  if (TempId != null && TempId != id ) hide(TempId);
  TempId=id;
}
</script>

вы навели меня на мысль, спасибо )

Это сообщение отредактировал(а) Flops - 24.2.2009, 12:54
PM MAIL   Вверх
Soah
Дата 24.2.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

if (TempId != null)
    hide(TempId);

TempId=id;

if (document.getElementById(id).style.display == 'none') {
    show(id);
} else {
    hide(id);
}  


вот так лучше
Код

if (TempId != null)
    hide(TempId);

TempId=id;

show(id);


Это сообщение отредактировал(а) Soah - 24.2.2009, 12:59
PM MAIL   Вверх
Flops
Дата 24.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ваш вариант я пробовал, эффект тот же, нужно было просто добавить ещё одно условие, спасибо большое за мысль ещё раз smile
Склоняюсь в сторону обработчика, тк если текст будет большой то это двойная операция во первых просто не нужна, а во вторых будет моргать экран )

Это сообщение отредактировал(а) Flops - 24.2.2009, 13:02
PM MAIL   Вверх
Soah
Дата 24.2.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Flops @  24.2.2009,  12:58 Найти цитируемый пост)
Склоняюсь в сторону обработчика, тк если текст будет большой то это двойная операция во первых просто не нужна, а во вторых будет моргать экран )

Код

if (TempId != null && TempId != id)
    hide(TempId);

TempId=id;

show(id);

если текст был скрыт, то он его покажет,
а если текст и так уже виден то ничего и не произойдёт.

Это сообщение отредактировал(а) Soah - 24.2.2009, 13:18
PM MAIL   Вверх
Flops
Дата 24.2.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну, по-моему опять ненужная операция.
Код

var TempId=null;
function hide(id){ document.getElementById(id).style.display = 'none';}
function ToggleStyle(id){
 var elem = document.getElementById(id).style;
 if ( elem.display == 'none') { elem.display = 'block'; } else { hide(id);}
 if (TempId != null && TempId != id ) hide(TempId);
 TempId=id;
}

Причесал вроде во всех браузерах работает адекватно )

Это сообщение отредактировал(а) Flops - 24.2.2009, 13:58
PM MAIL   Вверх
Soah
Дата 24.2.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не буду ничего навязывать

Цитата(Soah @  24.2.2009,  13:14 Найти цитируемый пост)

show(id); //document.getElementById(id).style.display = 'block';


Цитата(Flops @  24.2.2009,  12:51 Найти цитируемый пост)

function show(id){ document.getElementById(id).style.display = 'block';}
function hide(id){ document.getElementById(id).style.display = 'none';}
// ...
if ( document.getElementById(id).style.display == 'none') {      
    show(id);  // document.getElementById(id).style.display = 'block';
} else {      
hide(id);  //document.getElementById(id).style.display = 'none';
}

и где у меня ненужная операция?

upd
Цитата(Flops @  24.2.2009,  13:56 Найти цитируемый пост)
if ( elem.display == 'none') { elem.display = 'block'; } else { hide(id);}

Код

if ( elem.display == 'none') { elem.display = 'block'; }

если он скрыт, зачем его скрывать

Это сообщение отредактировал(а) Soah - 24.2.2009, 14:16
PM MAIL   Вверх
Flops
Дата 24.2.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я бы на вашем месте посмотрел значение block и none )
Лишняя операция - show( id );
Если не верите рабочая версия на http://igoraspb.ru/index.php?nma=olda
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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