@ivadfox

Как показать/скрыть div по клику. Скрыть по клику в любое место?

Есть вот такой код, работает, но необходимо сделать так, что бы div скрывался по клику в любое место, а не только по той же ссылке.
<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')">Open_block</a></li>
  • Вопрос задан
  • 14247 просмотров
Пригласить эксперта
Ответы на вопрос 1
@serega_kaktus
Программист-самоучка, фрилансер
<script type="text/javascript">
document.body.onclick = function(event) {
  var objs = document.getElementsByClassName('block_class'); 
for (var i; i < objs.length; i++) {
 //Если css-свойство display block и кликнули не по ссылке, по которой должен открыться блок, то: 
 if (objs[i].style.display == "block" && objs[i].attributes['data-block-id'] != event.target.attributes['data-block-id']) { 
   objs[i].style.display = "none"; //Скрываем элемент
  }
}
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 + " не найден!"); 
            }

ссылка теперь в таком формате
<a href="javascript:void(0)" onclick="showHide('block_id')" data-block-id="block_id">Open_block</a></li>

Аттрибут data-block-id так и пишется, на конкретный id не заменяется. Все скрываемые блоки должны иметь общий класс block_class
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы