Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Скрипты для сокрытия слоев |
Автор: martin 29.10.2004, 17:34 | ||||||
Помогите разобраться. На странице слои, по умолчанию скрытые. При клике на линк "Показать" запускается скрипт:
Действие:
Слой layer1 открылся. Еще есть слой 2, слой 3, 4, ... 12. Все определяются по номерному id. Чтобы закрыть слой, я использую функцию removeElem: <a href="" onClick="removeElem('layer1'); return false;">Спрятать</a> Слой layer1 закрылся. То же и слой 2, 3, ... Задача 1 При открытии слоя - спрятать линк "Показать". С глаз долой. Как ее решить? Можно положить линк "Показать" в контейнер <div id="layer0">, и к событию onclick добавить layer0.style.display="none". Действие:
Но это сработает, если на странице только один слой. А у меня их, предположим, три. Добавлять к событию onclick layer[порядковый номер].style.display="none" - ошибочно (убедился). Подсказали добрые люди: функция принимает 2 значения - id слоя который надо спрятать и id слоя который надо показать. И больше подсказывать не стали. Как это написать? Как будет выглядеть скрипт? Задача 2 На другой странице ситуация со слоями в тексте повторяется. Но здесь было бы намного удобнее, если бы слой появлялся и прятался при клике на одном и том же линке - "Подробнее", например. Как это осуществить? |
Автор: Step 29.10.2004, 17:49 | ||
http://forum.vingrad.ru/index.php?showtopic=32978 |
Автор: sergejzr 29.10.2004, 17:55 | ||
А вот примерное решение второго вопроса ![]()
На форуме предусмотрена подсветка кода. Вы ей не воспользовались. Сообщите пожалуйста, какие трудности у вас возникли по этому поводу ![]() Пожалуйста, соблюдайте правила форума один топик - один вопрос |
Автор: martin 29.10.2004, 18:52 |
sergej.z стормозил ![]() понял, отныне только онтоп. благодарю, иду пробовать. думать иду. |
Автор: martin 29.10.2004, 22:14 | ||
Step Спасибо. Я успешно не разобрался. Знаний мало. sergej.z Итак:
<a href="" onClick="show_hide_Elem('layer1'); return false;">Подробности</a>. <div id="layer1"> (по умолчанию скрытый) <p>Пару слов о серьезном. </div> Нужно, чтобы при клике на "Подробности" слой layer1 появлялся, а при повторном клике - прятался обратно. В Опера7: слой открывается, и обратно закрываться не желает. И тишина. В ИЕ6: открываю файл из C:\Documents and Settings\user\My Documents\about.html Линк, обрабатываемый этой функцией, ведет в никуда. Точнее - указывает прямиком на file:///C:/Documents%20and%20Settings/user/My%20Documents/ Жмем раз - слой открылся. Жмем второй раз - и в браузере... показывается содержимое C:\Documents and Settings\user\My Documents ![]() Что делать? |
Автор: sergejzr 29.10.2004, 23:26 | ||
Вот, посмотрите ![]() Это ессно не готовое решение ![]()
|
Автор: Alx 1.11.2004, 11:41 | ||||||
вот решение первого вопроса:
второго:
в втором случае меняется содержимое ссылки с "открыть" на "скрыть" и наоборот. при желании это можно убрать, удалив строки
и заменив содержимое ссылок с "Показать" на "Подробности". |
Автор: Sardar 1.11.2004, 21:02 |
ALEXANDRO вместо window.event.srcElement который существует только в IE и Опере лучше передавать сслыку на самого себя(this) или на дочерний тег еще одним аргументом функции. Пиши кросс-браузерно ![]() |
Автор: Alx 2.11.2004, 14:51 |
ок ![]() |
Автор: martin 5.11.2004, 12:56 | ||||
Большое спасибо. Приятный во всех отношениях форум. Я понял принцип. О частностях: для пункта два, мне кажется, что целесообразнее решение через (elemId). Напомню, что по умолчанию слои на странице абсолютно скрыты. Напрочь. Через параметр display. Переписал так:
Кстати, намного удобнее, если слово "Показать" (в моем случае) действительно является линком (href=""), тогда и title="Показать/Спрятать слой" можно добавить. К onclick="такая-то функция" нужно добавить return false, и все будет в порядке. Пример: [/code]
|
Автор: Sardar 5.11.2004, 14:35 |
Также можно вообще отказатся от якорей и использовать span, что логичнее и не несет побочных эффектов ![]() |