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

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

13.07.2012, 09:32. Показов 16891. Ответов 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,529
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,529
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,529
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru