Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 12.11.2008, 20:58   #1
Специалист
 
Аватар для Challenger
 
Регистрация: 29.08.2008
Адрес: РОССИЯ. Севастополь.
Сообщений: 430
Вес репутации: 205
Challenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личность
Отправить сообщение для Challenger с помощью ICQ
Question Подскажите ЖабаСкрипт

Цель такая:
Сделать одну кнопку (ссылку) после щелчка по которой скрывались/показывались несколько элементов с одним классом(class=""). Важно то что бы скрипт брал не идентификатор, а класс. Идея похожа на скрипт Скрыть/показать, но есть одно "НО", для скрипта Скрыть/показать используется Идентификатор, мне нужен класс, так как повторяющиеся идентификаторы в коде нарушают валидность.
Подскажите, кто шарит ЖС, т.к. я в нем не очень силен. Спасибо.

ЗЫ: Пример скрипта Скрыть/Показать:
http://elementalgames.com/forum/down...e=418&msg=4999
__________________
Люблю все на "Ш". Шампанское, маШины, женШин...
Challenger вне форума   Ответить с цитированием
Старый 12.11.2008, 22:09   #2
Злой модератор
 
Аватар для Wink
 
Регистрация: 25.03.2007
Адрес: Deep forest
Сообщений: 5,343
Вес репутации: 502
Wink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущее
По умолчанию

Если не использовать библиотеки типа jquery, то можно перебором элементов:
Код HTML:
var div = document.getElementsByTagName("div");
for (var i=0; i < div.length; i++)
{
	if (div[i].className == 'hideClass') 
	div[i].style.display = (div[i].style.display == 'none')? '':'none';
}
Wink вне форума   Ответить с цитированием
Старый 13.11.2008, 10:07   #3
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 236
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

.... и лучше найденные ДИВы закешировать, если предполагается часто пользоваться отображением/скрытием
ahsinis вне форума   Ответить с цитированием
Старый 13.11.2008, 16:17   #4
Специалист
 
Аватар для Challenger
 
Регистрация: 29.08.2008
Адрес: РОССИЯ. Севастополь.
Сообщений: 430
Вес репутации: 205
Challenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личность
Отправить сообщение для Challenger с помощью ICQ
По умолчанию

Цитата:
Сообщение от ahsinis Посмотреть сообщение
.... и лучше найденные ДИВы закешировать, если предполагается часто пользоваться отображением/скрытием
а можно то что пишете сопровождать примерами применения... я не всегда понимаю с первого раза того что не знаю...
__________________
Люблю все на "Ш". Шампанское, маШины, женШин...
Challenger вне форума   Ответить с цитированием
Старый 13.11.2008, 17:25   #5
JS Developer
 
Аватар для Regent
 
Регистрация: 10.04.2008
Адрес: Виргинские острова
Сообщений: 1,093
Вес репутации: 247
Regent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущее
Отправить сообщение для Regent с помощью ICQ
По умолчанию

Цитата:
Сообщение от Challenger Посмотреть сообщение
а можно то что пишете сопровождать примерами применения
<button onclick="my_funcs()">Кнопка</button>
<script type="javascript">
<!--
function my_funcs() {

var div = document.getElementsByTagName("div");
for (var i=0; i < div.length; i++)
{
if (div[i].className == 'hideClass')
div[i].style.display = (div[i].style.display == 'none')? '':'none';
}

}
//-->
</script>

<div>
<b class="hideClass">Текст</b>
<span class="hideClass">Текст</span>
</div>

С вас 8 тысяч рублей
Regent вне форума   Ответить с цитированием
Старый 13.11.2008, 19:36   #6
Специалист
 
Аватар для Challenger
 
Регистрация: 29.08.2008
Адрес: РОССИЯ. Севастополь.
Сообщений: 430
Вес репутации: 205
Challenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личность
Отправить сообщение для Challenger с помощью ICQ
По умолчанию

Цитата:
Сообщение от Regent Посмотреть сообщение
<button onclick="my_funcs()">Кнопка</button>
<script type="javascript">
<!--
function my_funcs() {

var div = document.getElementsByTagName("div");
for (var i=0; i < div.length; i++)
{
if (div[i].className == 'hideClass')
div[i].style.display = (div[i].style.display == 'none')? '':'none';
}

}
//-->
</script>

<div>
<b class="hideClass">Текст</b>
<span class="hideClass">Текст</span>
</div>

С вас 8 тысяч рублей
я про кэширование а не про єто
__________________
Люблю все на "Ш". Шампанское, маШины, женШин...
Challenger вне форума   Ответить с цитированием
Старый 13.11.2008, 22:56   #7
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 236
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Что-то типа этого
Код:
var classDivs = null;
function my_funcs() {
  if(classDivs === null){
    classDivs = [];
    var div = document.getElementsByTagName("div");
    for (var i=0; i < div.length; i++) 
      if (div[i].className == 'hideClass')
        classDivs.push(div[i]);
  }
  for (var i=0; i < classDivs.length; i++) 
    classDivs[i].style.display = (classDivs.style[i].display != 'block') ? 'block' : 'none';
}
Тут правда следует помнить, что если видимость элемента указана в CSS секции, что при первом проходе classDivs[i].style.display будет равна пустой строке, так что надо в вашем контексте условие подправить. Если элемент первоначально скрыт, то
(classDivs.style[i].display != 'block') ? 'block' : 'none';,
если выден, то
(classDivs.style[i].display != 'none') ? 'none' : 'block';
ahsinis вне форума   Ответить с цитированием
Старый 14.11.2008, 09:38   #8
JS Developer
 
Аватар для Regent
 
Регистрация: 10.04.2008
Адрес: Виргинские острова
Сообщений: 1,093
Вес репутации: 247
Regent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущееRegent - прекрасное будущее
Отправить сообщение для Regent с помощью ICQ
По умолчанию

Цитата:
Сообщение от ahsinis Посмотреть сообщение
(classDivs.style[i].display != 'block') ? 'block' : 'none';,
Как я понял, классы будут в контексте страницы, так что вариант block не подходит. Лучше его заменить другим значением.

Цитата:
Сообщение от Challenger Посмотреть сообщение
я про кэширование а не про єто
А зачем вам кеширование? Чем проще, тем надёжнее (ну невсегда конечно)
Regent вне форума   Ответить с цитированием
Старый 15.11.2008, 14:16   #9
Специалист
 
Аватар для Challenger
 
Регистрация: 29.08.2008
Адрес: РОССИЯ. Севастополь.
Сообщений: 430
Вес репутации: 205
Challenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личностьChallenger - просто великолепная личность
Отправить сообщение для Challenger с помощью ICQ
По умолчанию

прошу прошения что сразу не отписал.
Решил вот как:

Цитата:
function ShowHide(class) {
var div = document.getElementsByTagName("div");
for (var i=0; i < div.length; i++)
{

if(div[i].className.toLowerCase() == class.toLowerCase())
{
if(div[i].style.display == "none")
div[i].style.display = "";
else
div[i].style.display = "none";
}

}
}
всем огромное спасибо за помощь
__________________
Люблю все на "Ш". Шампанское, маШины, женШин...
Challenger вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите CMS asdfg Курилка 16 16.08.2008 21:01
Подскажите по PR KOMMYHuC Google, MSN, Yahoo 17 11.08.2008 17:44
Подскажите. NewLeaX Вопросы от новичков 4 13.02.2008 16:05
подскажите stremlenie1 Курилка 7 26.01.2008 22:07
Подскажите masterwe Установка кода на различные движки 3 04.01.2008 19:16


Часовой пояс GMT +3, время: 00:09.