Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/88: Рейтинг темы: голосов - 88, средняя оценка - 4.59
 Аватар для WEB-Ренат
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 28

Как скрыть блок div по клику вне самого блока?

13.07.2012, 09:32. Показов 16948. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Нашёл вот такой код:

JavaScript
1
2
3
4
5
6
document.onclick = function(ev) {
  myDiv = document.getElementById('myDivId');
  if (ev.target.id != myDiv.id && myDiv.style.display == 'block')  {
    myDiv.style.display = 'none';
  }
}
с этим всё ясно, работает отлично. А если допустим, на одной странице существует 10 скрытых блоков, как скрыть блок при открытии одного из них?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2012, 09:32
Ответы с готовыми решениями:

Как скрыть выпадающий блок меню по клику вне его области
Выручайте! Нужно скрыть выпадающий блок с id="hidden_12" по клику вне его области. Как это можно реализовать? <div...

Скрыть блок по клику вне его
Доброго времени! Скрипты не моя стихия, но пришлось ковыряться в коде чужом подскажите как сделать след есть менюшные кнопки кликая на...

Как скрыть скрипт внутри блока div
как скрыть скрипт внутри блока div? всю башку сломал помогите $(function(){ $('#banner_top').click(function(){ $(this).animate( ...

8
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.07.2012, 10:21
масса вариантов. можно вот так к примеру
JavaScript
1
2
3
4
5
6
window.onload = function () {
if(document.getElementById('first').style.display=='block')
{
document.getElementById('second').style.display='none';
}
}
только меняете на нужное действие вместо загрузки страницы
1
 Аватар для WEB-Ренат
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 28
13.07.2012, 15:36  [ТС]
Это не то, что мне нужно.
Например, на сайте существует N количество скрытых блоков, которых по определённым кликам нужно показывать. Но суть не в этом, а в том, как скрыть эти блоки (которые показали) по клику вне самого этого блока.

код примерно такой:

JavaScript
1
2
3
4
5
6
7
<script>
function view(idDiv) {
    var v = document.getElementById(idDiv);
    if(v.style.display != 'block')
        v.style.display = 'block';
}
</script>
HTML5
1
2
3
4
5
6
7
<div onclick="view('div1')">click 1</div>
<div onclick="view('div2')">click 2</div>
<div onclick="view('div3')">click 3</div>
 
<div id='div1' style='display:none;'>view 1</div>
<div id='div2' style='display:none;'>view 2</div>
<div id='div3' style='display:none;'>view 3</div>
А вот как скрыть по клику в любом месте, исключая самого этого блока не могу понять.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.07.2012, 20:38
ну.. например так
JavaScript
1
2
3
4
5
6
7
$(window).load(function () {
$(window).click(function () {
$('#id_diva').hide();});
$('#id_diva').click(function () {
$('#id_diva').show();
});
});
не проверял, навряд ли это работать будет))
только появляется вопрос. если кликнуть по окну не по блоку, то как мы потом увидим его?)

Добавлено через 3 минуты
при клике на блок тоже скрывает
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,531
13.07.2012, 21:31
Цитата Сообщение от WEB-Ренат Посмотреть сообщение
А если допустим, на одной странице существует 10 скрытых блоков, как скрыть блок при открытии одного из них?
Все эти блоки каким то образом должны идентифицироваться как нужные, после сбора этих блоков в одну кучу просто все их закрываешь, а в конце открываешь тот по которому щёлкнул. Чтобы зря не закрывать закрытые, можно проверку добавить, но её обычно не делают.


Цитата Сообщение от WEB-Ренат Посмотреть сообщение
как скрыть эти блоки (которые показали) по клику вне самого этого блока.
Не раньше утра скажу.
1
 Аватар для WEB-Ренат
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 28
13.07.2012, 22:58  [ТС]
Цитата Сообщение от newJS Посмотреть сообщение
Все эти блоки каким то образом должны идентифицироваться как нужные, после сбора этих блоков в одну кучу просто все их закрываешь, а в конце открываешь тот по которому щёлкнул. Чтобы зря не закрывать закрытые, можно проверку добавить, но её обычно не делают.



Не раньше утра скажу.
буду ждать )
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,531
14.07.2012, 05:30
Немного навороченно в попытке сделать более универсально, так что лишнее можно удалять.
Отлов конкретного блока(блоков) можно по разному сделать, переделывай как надо.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<title>Скрыть элемент при клике мимо него.</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<style type="text/css">
.my {background:silver; padding:0 5px;}
</style>
<script type="text/javascript">
 
document.onclick=CliquesPast;
 
 
function CliquesPast(ev){
var obj=ev?ev.target:event.srcElement;//остальные или ИЕ
//в цикле просматриваем все теги, от тега по которому щёлкнули до тега HTML.
while(obj.parentNode){
if(obj.id=='myObj'){break;}//если попался нужный элемент
else{obj=obj.parentNode;}};//иначе ищем дальше
//на выходе из цикла проверяем где вышли
if(obj.id=='myObj'){
if(obj.style.color=='red'||obj.style.color=='#ff0000'){//остальные или опера
obj.style.color='black'; return false;}
else{obj.style.color='red'; return false;}};
//если не попался myObj, значит кликнули мимо
if(document.getElementById("myObj").style.display=="none"){
document.getElementById("myObj").style.display="block";}
else{document.getElementById("myObj").style.display="none";};
 
 };//
</script>
</head>
 
<body>
 
<div id="glCont">Главный контейнер.
 
<div><span id="myObj"><q class="my"><span>Если <b>кликнуть</b> мимо <i>этого</i> текста он и<samp>счезне</samp>т.</span> А если по нему, то покраснеет от стыда, типа попался.</q></span></div>
<div>Повторный клик вернёт строку.</div>
<div>Как видим глубина вложенности не играет роли.</div>
&lt;div&gt;&lt;span id=&quot;myObj&quot;&gt;&lt;q class=&quot;my&quot;&gt;&lt;span&gt;Если &lt;b&gt;кликнуть&lt;/b&gt; мимо &lt;i&gt;этого&lt;/i&gt; текста он и&lt;samp&gt;счезне&lt;/samp&gt;т.&lt;/span&gt;&lt;/q&gt;&lt;/span&gt;&lt;/div&gt;
 
</div>
 
</body>
</html>
1
 Аватар для WEB-Ренат
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 28
14.07.2012, 13:14  [ТС]
Спасибо большое!!!

Добавлено через 4 часа 57 минут
newJS, все что мне нужно было, я сделал, большое спасибо. А вот я не могу понять, зачем цикл нужен?
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,531
14.07.2012, 20:48
Цитата Сообщение от WEB-Ренат Посмотреть сообщение
А вот я не могу понять, зачем цикл нужен?
А как без цикла перебрать все элементы?
В примере не зря панихано много тегов, они только для демонстрации.
Мышка то щелкнет по любому тегу, на любой глубине вложенности, вот всю эту вложенность в цикле и прокручивает.
Извини, я не препод лучше не могу рассказать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2012, 20:48
Помогаю со студенческими работами здесь

Скрыть элемент по клику вне его
Необходимо скрыть div по клику вне его, нашел неплохой пример jQuery(function($){ $(document).mouseup(function (e){ // событие клика...

Скрыть блок первый блок div, если есть второй div
Добрый день! Подскажите пожалуйста, начинаю изучать JavaScript и тут столкнулся с такой задачей. Мне необходимо скрыть первый блок div,...

Действие по клику из вне div и переключение .toggle
Добрый день! Столкнулся с такой проблемой - есть див, по клику которого открывается менюшка. Реализовано это через .toggle, но захотелось,...

Отобразить/скрыть div по клику
Здравствуйте! Я не очень разбираюсь в яве, но нужен код, по которому дивы в меню будут раскрываться по клику на них и закрываться по клику...

Как скрыть блок Div на большом разрешении
Добрый вечер меня интересует как правильно скрыть блок Div на большом разрешении ( пк). Подскажите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru