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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как спрятать сразу несколько слоев 
:(
    Опции темы
Captain Blood
Дата 6.7.2004, 10:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите, как можно спрятать слои с одним идентификатором через display? У меня есть следующий код:
<div id=layer>...</div>
<div id=layer>...</div>
<div id=layer>...</div>

Мне надо сделать, чтобы обработчик связанный с кнопкой, показывал или прятал ВСЕ слои с именем layer одновременно. У меня же пока получается, что только один самый верхний слой реагирует на скрипт.
Мне важна идея, как это сделать, программу сам постараюсь написать.
  Вверх
GoodBoy
Дата 6.7.2004, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

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



Дай им разные ID!!! При таком раскладе у тебя и будет прятаться только первый найденный слой!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Се ля ви
Дата 6.7.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

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



ID просто заменяй на классы, и присваивай стиль невидимости классу, а не идентификатору. Или прописывай невидимость в параметре style каждого тега.

А если тебе нужно дотянуться из JavaScript до этих тегов, это сложнее. Используй методы DOM и параметр className , сверяя его с именем твоего класса.


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Gold Dragon
Дата 6.7.2004, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



есть слои
<div id=layer1 style="DISPLAY: inline">...</div>
<div id=layer2 style="DISPLAY: inline">...</div>
<div id=layer3 style="DISPLAY: inline">...</div>

...
рисуем функцию в которую передаём переменную
function qqq(a){

//делаем переменную
var tmp

//определяем семейство браузеров
IE = (document.all)
NC = (document.layers)
Op = (document.getElementById)

//и далее поочерёдно их опрашиваем и делаем что тебе надо
for (var i=1; i<4; i++){
if(IE) tmp = document.all["layer"+i]
if(NC) tmp = document.layers["layer"+i]
if(Op) tmp = document.getElementById("layer"+i)


//если передано "0" - слои закрываются
if (a==0){tmp.style.display = "none"}

//если передано что либо другое - отрываем слои
else {tmp.style.display = "inline"}
}
}


Это сообщение отредактировал(а) Red Dragon - 6.7.2004, 12:45


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 6.7.2004, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



2Red Dragon по моему уже давно настала пора забыть о document.layers и document.all навсегда smile.gif

Пересказывая Се ля ви...
Если все подопытные находятся в одном родительском слое, то можно пробежатся по childNodes, меняя по по пути style.visibility у помеченных через className. Так будет работать и в глючной опере.

Способ более изящный:
Код
<!-- общий стиль -->
<style id="test" type="text/css">
.fordivs {visibility:visible}
</style>
.....
function openClose() {
if(document.styleSheets) {
 //опять IE с Мозиллой не поделили имена...
 var t=document.styleSheets[0][document.all? "rules": "cssRules"][0].style;
 t.visibility=(t.visibility=="visible")? "hidden": "visible";
}
}
.....
<div class="fordivs">Test</div><br>
<div class="fordivs">Test</div><br>
<span onClick="openClose()">Закрыть/Открыть</span>

Но, как и следовало ожидать, в опере он не работает - не существует document.styleSheets.


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


Unregistered











Спасибо всем за помощь.
Идея с разными стилями у меня была. В IE можно сделать две разных стилевых таблицы и присваивать по очереди любому элементу - один стиль делает слои видимыми, другой - невидимыми. Но, увы, в Опере, как было замечено, это не работает.
Резюмируя сказанное другими авторами, можно выделить два решения. Первое - присвоить каждому слою свой идентификатор и в цикле по ним всем "пробегаться" пряча слои или делая их видимыми. Второе - сделать как предложил Sardar , а на Оперу плюнуть, отключив фичу со слоями, например, чтобы слои всегда отображались. Не очень хороший способ, но тоже вариант, когда надо сделать проще.
Правильно идеи изложил?

  Вверх
mix
Дата 7.7.2004, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ИМХО, ребята, вы делаете из мухи - слона.
Код

<style>
#sloi{display:block}
</style>

<script>
function openClose()
{
var s=document.getElementById('sloi').style
s.display=s.display=="block"?"none":"block";
}
</script>

<div id=sloi>
<div>111</div>
<div>222</div>
<div>333</div>
</div>

<span onClick="openClose()">Закрыть/Открыть</span>

PM MAIL   Вверх
Gold Dragon
Дата 7.7.2004, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



mix
А если слои в разных местах, а не подряд?

Sardar
Почему можно забыть?
Цитата
по моему уже давно настала пора забыть о document.layers и document.all навсегда




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 7.7.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата
Sardar Почему можно забыть?

Это была шутка, к которой я отношусь серьезно smile.gif
Есть понятие стандарт(DOM), есть доказанное опытным путем явление: люди любят новый софт. Существует странная тенденция софта реализовывать стандарты smile.gif
Вывод: где ты, кроме как у "убогих" КПК, видел браузер, который не поддерживает DOM'овский getElmentById и этот браузер не старше 5 лет?


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


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Семён Семёныч........ smile.gif


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
mix
Дата 7.7.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
А если слои в разных местах, а не подряд?

Тогда так:

Код
<script>
function getElementsByClassName(c)
{
r=new Array();
var A=document.all?document.all:document.getElementsByTagName('*');
for(var i=0;i<A.length;i++)
if(A[i].className==c) r[r.length]=A[i];
return r;
}

function hide()
{
var s=getElementsByClassName('sloy');
for(var i=0;i<s.length;i++)
   s[i].style.display="none";
}
</script>


<div class=sloy>111</div>
<div class=sloy>222</div>
<div class=sloy>333</div>


<span onClick="hide()">скрыть</span>

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


 




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


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

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