Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2014, 13:53
Интересующийся
Отправить личное сообщение для candro Посмотреть профиль Найти все сообщения от candro
 
Регистрация: 27.02.2012
Сообщений: 26

Как сделать скрытие открытого элемента при открытии другого showHide
Как сделать скрытие открытого элемента при открытии другого?

<script type="text/javascript">
            function showHide(element_id) {
                //Если элемент с id-шником element_id существует
                if (document.getElementById(element_id)) { 
                    //Записываем ссылку на элемент в переменную obj
                    var obj = document.getElementById(element_id); 
                    //Если css-свойство display не block, то: 
                    if (obj.style.display != "block") { 
                        obj.style.display = "block"; //Показываем элемент
                    }
                    else obj.style.display = "none"; //Скрываем элемент
                }
                //Если элемент с id-шником element_id не найден, то выводим сообщение
                else alert("Элемент с id: " + element_id + " не найден!"); 
            }   
        </script>
 
 <a href="javascript:void(0)" onclick="showHide('block_id')">Показать</a>
  <div id="block_id" style="display: none;">
Текст
</div>

 <a href="javascript:void(0)" onclick="showHide('block_id2')"> Показать</a>
 <a href="javascript:void(0)" onclick="showHide('block_id3')">Показать</a>
 
  <div id="block_id2" style="display: none;">
Текст
</div>
 <div id="block_id3" style="display: none;">
Текст
</div>

 <a href="javascript:void(0)" onclick="showHide('block_id4')">Показать</a>
 <a href="javascript:void(0)" onclick="showHide('block_id5')">Показать</a>
  <div id="block_id5" style="display: none;">
Текст
</div>
  <div id="block_id4" style="display: none;">
Текст
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2014, 14:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Я так понимаю что у вас есть какой-то список, и только 1 его элемент может быть виден на экране. Это делается вообще не так. Вы делаете стилями их все невидимыми и добавляете класс "active" одному из них (а с классом "active" - он видимый). Тогда все что вам надо сделать при клике по другому пункту - найти актив и убрать ему класс и тому на который кликнули - добавить. Даже если у вас не список - судя по тому что вы хотите этот алгоритм тут применим.
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2014, 14:48
Интересующийся
Отправить личное сообщение для candro Посмотреть профиль Найти все сообщения от candro
 
Регистрация: 27.02.2012
Сообщений: 26

В принципе я так и предполагал, но проблема в том, что способа реализации я не совсем понимаю. Можете объяснить на примере?
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2014, 14:57
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<style>
  p {display: none}
  p.active {display: block}
</style>

<ul>
  <li>
     <a href="#">Раскрыть</a>
     <p class="active">Скрытый текст 1</p>
  </li>
  <li>
     <a href="#">Раскрыть</a>
     <p>Скрытый текст 2</p>
  </li>
  <li>
     <a href="#">Раскрыть</a>
     <p>Скрытый текст 3</p>
  </li>
</ul>

<script>

document.addEventListener("click", function (e) {

  if (e.target.tagName == "A") {

   document.querySelector(".active").className = "";
   e.target.parentNode.querySelector("p").className = "active";

   }

}, false);

</script>
Ответить с цитированием
  #5 (permalink)  
Старый 09.10.2014, 15:03
Интересующийся
Отправить личное сообщение для candro Посмотреть профиль Найти все сообщения от candro
 
Регистрация: 27.02.2012
Сообщений: 26

Спасибо, оказывается все так просто.
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2014, 09:44
Интересующийся
Отправить личное сообщение для candro Посмотреть профиль Найти все сообщения от candro
 
Регистрация: 27.02.2012
Сообщений: 26

А как сделать с картинками? Что делаю не правильно?
<script>

document.addEventListener("click", function (e) {

  if (e.target.tagName == "IMG") {

   document.querySelector(".active").className = "";
   e.target.parentNode.querySelector("p").className = "active";

   }

}, false);

</script>
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2014, 11:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

candro,
Сделайте нормальный тестовый пример, так непонятно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Toggle: скрыть текущий блок при открытии другого yozuul jQuery 5 25.11.2014 09:59
Как можно сделать кнопку без ссылки, но с переходом по ссылке при нажатии ? autobuh Элементы интерфейса 10 31.07.2014 05:59
Как сделать, чтобы фокус не переходил с элемента Shitbox2 Общие вопросы Javascript 3 14.03.2014 15:13
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24