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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> show/hide дивов 
:(
    Опции темы
Joes
Дата 7.1.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



задача стоит такая:

есть блоки с текстом. блоки имеют айди, начинающиеся с a, т.е. a130, a20, a300.
нужно, чтобы по нажатию на какой-либо из пп. меню открывался оный, а все остальные закрывались, т.е. style.display = 'none';
вот я и не знаю как сделать, чтобы по нажатию, например, на второй пункт меню, открытый прежде первый - закрывался.

PM MAIL   Вверх
ezhikov
Дата 7.1.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробуйте разобрать этот код

Код

var oldID = null;

  function show(idCel) {
    
    if (oldID != null)
      eval('document.all.'+oldID +'.style.display ="none" ');
      eval('document.all.'+idCel+'.style.display ="" ');
    oldID = idCel;
   
  }



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


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

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



ezhikov, а зачем так усложнять? eval использовать?
Код

<script type="text/javascript" language="javascript">
/* 
    id элемента, который отображается в данный момент
    инициируется в момент загрузки страницы
*/
var showedId = null;

function ShowAndHide(showId) {
/* 
    скрывает элемент с id = showedId и отображает элемент с id = showId
*/
    document.getElementById(showedId).style.display = "none"; // скрыли
    document.getElementById(showId).style.display = "block"; // показали
    showedId = showId; // запомнили id отображаемого элемента
}
</script>
Joes, а зачем здесь условие?
Цитата(Joes @ 7.1.2006, 23:06 Найти цитируемый пост)

блоки имеют айди, начинающиеся с a, т.е. a130, a20, a300.


PM MAIL ICQ   Вверх
ezhikov
Дата 8.1.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не спец в скриптах. Данный вариант использовал на сайте. Что, где и как уже не помню - главное работало smile пример: http://vibm.narod.ru (правда он там немного усложнен)
сам набор скриптов http://vibm.narod.ru/jscript.js
на академичность не претендую smile
PM MAIL   Вверх
Joes
Дата 8.1.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ezhikov
+1 спасибо, что-то я до eval'a вчера не додумался...
PM MAIL   Вверх
Sardar
Дата 9.1.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



ezhikov это самое глючное решение что я когда либо видел, мало того ещё и не по стандартам W3C, мозилла(и все продвинутые браузеры) будет материться smile

Пример от Illuminaty самый правильный.


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


Новичок



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

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



А в чем собсно глючность данного решения. В 99% времени я работаю в FireFox и проблем не наблюдаю. Что здесь не работает или не должно работать? Правда я еще добавил в конец
Код

    eval('document.all.about.style.display ="none" ');
  }

где "about" - у меня был начальный открытый id

p.s. Что-то профиль данного форума у меня постоянно слетает. Может что настроить где надо?

Это сообщение отредактировал(а) ezhikov - 9.1.2006, 21:09
PM MAIL   Вверх
Sardar
Дата 9.1.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата(ezhikov @ 9.1.2006, 19:41 Найти цитируемый пост)
А в чем собсно глючность данного решения.

В том что document.all поддерживался изначально IE и Оперой, затем мозилла таки сломилась и с версий 1.0.7 тоже стала поддерживать document.all (хотя и выдаёт предупреждения в консоль). По моему другие браузеры, Safari например document.all не поддерживает. Отсюда понимаем что не нужно юзать сию не стандартную фичу, document.getElementById делает то же самое (ну почти, элементы ищуться только по ID).
Второе замечание по самому eval, эта штука делает код не опрятным, мало эффективным с труднонаходимыми ошибками. Не знаю таких случаев что бы eval понадобился...
В итоге с твой код не эффективный и не везде будет работать.

Цитата(ezhikov @ 9.1.2006, 19:41 Найти цитируемый пост)
Правда я еще добавил в конец

Сам подумай, зачем там использовать eval, если ничего в коде ты не меняешь. Убери eval, строку что передавал поставь как код, понаблюдай за тем что функционально ничего не изменилось smile


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


Новичок



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

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



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


 




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


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

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