Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как создать спойлер на Javascript

Ответить
Настройки темы
Как создать спойлер на Javascript

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Занят разработкой сайта, и возникла такая необходимость:

Имеется таблица, в ней в строках написаны названия программ, и надо, чтобы после нажатия на название программы вниз (типа выезжающего списка) открывался спойлер со скриншотом и описанием.

Прошу помощи, как это осуществить
+ желательно, чтобы при открытии html странички в Dreamweaver все спойлеры были развёрнуты, т.к. программ очень много, и так будет быстрее и легче, чем каждую описывать непосредственно в коде

Заранее благодарен

Отправлено: 07:39, 28-10-2006

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Dimonka
А что вас не устраивает в этом варианте? Он прекрасно показывает идею. Дальше уж расширяйте как пожелаете.

-------
http://ivank.ru


Отправлено: 20:31, 02-11-2006 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Просто интересно
+ тот пример по умолчанию открыт, а мне надо чтобы он по умолчанию был свёрнут

Отправлено: 17:41, 03-11-2006 | #12


Аватара для elfoflorien

Старожил


Сообщения: 158
Благодарности: 1

Профиль | Отправить PM | Цитировать


Dimonka
просто напишите style="visibility: hidden; display: none;" или как там его..

-------
panem et circences! (c)


Отправлено: 18:13, 03-11-2006 | #13


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Цитата Dimonka:
тот пример по умолчанию открыт, а мне надо чтобы он по умолчанию был свёрнут
Dimonka, без
Цитата ivank:
доработать напильником
не получится, увы. Но это не так уж и сложно - поглядите код приведенного примера и используйте подсказку данную в этом топе. Ну и по аналогии, не все же там открыто .

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 18:16, 03-11-2006 | #14


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Решил не создавать новую тему.
Доброго всем времени суток! Недавно возникла необходимость создания спойлеров, но я это решил так:
Код: Выделить весь код
<a id="show_1" onclick="document.getElementById('spoiler_1').style.display=''; document.getElementById('show_1').style.display='none';" class="link1">Открыть спойлер</a>
<span id="spoiler_1" style="display: none">
<a onclick="document.getElementById('spoiler_1').style.display='none'; document.getElementById('show_1').style.display='';" class="link2">Закрыть спойлер</a>
<br>Текст</span><br>
В интернете нашёл
Дело вот в чём... Спойлеров довольно много и нужно придумать как закрыть открытый спойлер при открытии другого. Т.е. что бы одновременно могло быть открыто не более одного спойлера.
Простите, если вопрос окажется простейшим... Я только html и css знаю. И то, не на профессиональном уровне.
Заранее благодарен!

Последний раз редактировалось asus a9rp, 20-07-2012 в 23:49.


Отправлено: 23:34, 20-07-2012 | #15


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата asus a9rp:
Дело вот в чём... Спойлеров довольно много и нужно придумать как закрыть открытый спойлер при открытии другого. Т.е. что бы одновременно могло быть открыто не более одного спойлера. »
Получаете коллекцию спойлеров, пробегаетесь по ней в цикле, закрываете все спойлеры. Затем уже открываете потребный, с которого пришло событие.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:29, 21-07-2012 | #16


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Я в JavaScript - новичок. Покапавшись в интернете, я смог написать работающий вариант:
Код: Выделить весь код
<!DOCTYPE html><html><head><title></title></head><body>

<a id="open1" onclick="
document.getElementById('close1').style.display='';
document.getElementById('open1').style.display='none';
document.getElementById('open2').style.display='';
document.getElementById('close2').style.display='none';
" class="link1">Open</a><span id="close1" style="display: none"><a onclick="
document.getElementById('close1').style.display='none';
document.getElementById('open1').style.display='';
" class="link2">Close</a><br>TEXT</span><br>

<a id="open2" onclick="
document.getElementById('close2').style.display='';
document.getElementById('open2').style.display='none';
document.getElementById('open1').style.display='';
document.getElementById('close1').style.display='none';
" class="link1">Open</a><span id="close2" style="display: none"><a onclick="
document.getElementById('close2').style.display='none';
document.getElementById('open2').style.display='';
" class="link2">Close</a><br>TEXT</span>

</body></html>
Это - только для двух спойлеров. А у меня их много... Можно ли это как-то "ужать"?

Последний раз редактировалось asus a9rp, 21-07-2012 в 23:34.


Отправлено: 23:27, 21-07-2012 | #17


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


asus a9rp, определите в CSS два класса (например, «Hide» и «Show»), различающихся видимостью. Изначально, при загрузке страницы, присвойте всем спойлерам, какие они у Вас там будут, класс «Hide». Обработку всех спойлеров привяжите к одному и тому же событию. При возникновении события проделайте примерно следующее (пишу на VBScript, переделайте на JavaScript):
Код: Выделить весь код
Sub HighlightAnswer(strElement)
  Set objTagDivCollection = document.all.tags("DIV")

  If Not IsNull(objTagDivCollection) Then
    For Each objTagElement In objTagDivCollection
      If objTagElement.className = "Show" Then
        objTagElement.ClassName = "Hide"
      End If

      If objTagElement.id = strElement Then
        objTagElement.ClassName = "Show"
      End If
    Next
  End If
End Sub
Если тэгов несколько видов (например ещё SPAN, A и т.п.) — просто постройте из них массив/коллекцию и пройдитесь по ним в цикле, заключив в него содержимое приведённой процедуры.

Последний раз редактировалось Iska, 22-07-2012 в 11:46. Причина: Исправлена грамматическая описка: «заключите» → «заключив»

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:53, 22-07-2012 | #18


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Iska, на данный момент получается вот что (с двумя спойлерами):
Код: Выделить весь код
<style type="text/css">
.show {display: block;}
.hide {display: none;}
</style>

<script type="text/javascript">
function my(){

divs = document.getElementsByTagName("div");
for( var x=0; x < divs.length; x++ ) {
divs[x].className='show';
}

spans = document.getElementsByTagName("span");
for( var x=0; x < spans.length; x++ ) {
spans[x].className='hide';
}

};</script>

<div onclick="my(); document.getElementById('close1').className='show';
document.getElementById('open1').className='hide';" class="show" id="open1">
<a class="link1">Open1</a></div>
<span onclick="my();" class="hide" id="close1"><a class="link2">Close1</a><br>
TEXT1<br></span>

<div onclick="my(); document.getElementById('close2').className='show';
document.getElementById('open2').className='hide';" class="show" id="open2">
<a class="link1">Open2</a></div>
<span onclick="my();" class="hide" id="close2"><a class="link2">Close2</a><br>
TEXT2<br></span>
Цитата Iska:
определите в CSS два класса (например, «Hide» и «Show»), различающихся видимостью. Изначально, при загрузке страницы, присвойте всем спойлерам, какие они у Вас там будут, класс «Hide». »
Есть.
Цитата Iska:
Получаете коллекцию спойлеров, пробегаетесь по ней в цикле, закрываете все спойлеры.»
Есть. Теперь при увеличении количества спойлеров onclick не разрастается. Меня уже всё устраивает Спасибо! Но всё же хочется, что бы в onclick отсался только скрипт. Для этого осталось:
Цитата Iska:
Затем уже открываете потребный, с которого пришло событие. »
Сейчас вожусь с этим. Я разобрался, как получить элемент, с которого пришло событие: var t = event.target || event.srcElement С этим t уже можно делать что угодно. Но вот, в чём проблема. Имеется 3 элемента: ссылка открытия спойлера, ссылка закрытия спойлера и содержимое. t - это элемент, с которого пришло событие. Он один. Думаю, как к нему привязать остальные два.

Отправлено: 22:44, 26-07-2012 | #19


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


asus a9rp, в функции обработки события ориентируйтесь, например, на однозначное определение типа элемента, от которого пришло событие, и их взаимное расположение относительно друг друга: т.е. на то, что первый из связанных тэгов у Вас — тэг «div», следующий за ним — тэг «a», следующий за ним — тэг «span». Таким образом, проверяя тип тэга и используя DOM («.previousSibling»/«.nextSibling»), Вы всегда сможете по полученному в функции обработки события event.srcElement получить доступ к двум другим, связанным с ним, тэгам, что позволит избежать Вам написания однотипного кода при тэгах:
Код: Выделить весь код
document.getElementById('close1').className='show';
document.getElementById('open1').className='hide';
…
document.getElementById('close2').className='show';
document.getElementById('open2').className='hide';
…
document.getElementById('closeN').className='show';
document.getElementById('openN').className='hide';

Отправлено: 01:02, 27-07-2012 | #20



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как создать спойлер на Javascript

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
как создать телефонный справочник на своем сайте я хочу создать телефонный справочник re5pect Вебмастеру 8 14-07-2008 19:45
как убрать окошко блокирующее javascript Turman Хочу все знать 4 05-11-2006 21:40
Как прочитать на JavaScript текстовый файл? Efremov Вебмастеру 5 11-01-2006 11:27
Как проверить JavaScript'ом наличие Flash??? Krendebobel Вебмастеру 10 28-06-2005 16:17
как в JavaScript передать переменную? Guest Вебмастеру 8 25-08-2004 13:33




 
Переход