Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   скрыти div по клику в любом месте документа (https://javascript.ru/forum/misc/2167-skryti-div-po-kliku-v-lyubom-meste-dokumenta.html)

Дмитрий С. 13.11.2008 14:01

скрыти div по клику в любом месте документа
 
Здравствуйте.
подскажите пожалуйста, где ошибка?

Нажав на кнопку хочу увидеть рядом с ней соответствующий див.
А затем, нажав в любом месте документа (в том числе и на сам этот див и на ту же кнопку) хочу этот див скрыть.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<style type="text/css">
#qw
{
	position: absolute;
	top: 0px;
	left: 0px;
	width: 100%;
	height: 100%;
	display: none;
}
</style>
<script type='text/javascript'>
function findPosX(obj) {
	var currleft = 0;
	if (obj.offsetParent)
	while (obj.offsetParent) {
		currleft += obj.offsetLeft
		obj = obj.offsetParent;
	}
	else if (obj.x) currleft += obj.x;
	return currleft;
}

function findPosY(obj) {
	var currtop = 0;
	if (obj.offsetParent)
	while (obj.offsetParent) {
		currtop += obj.offsetTop
		obj = obj.offsetParent;
	}
	else if (obj.y) currtop += obj.y;
	return currtop;
}

function open_sk(x) {
	bx = findPosX(document.getElementById('skbut'+x));
	by = findPosY(document.getElementById('skbut'+x));
    el = document.getElementById('qw');
    di = document.getElementById('sk'+x);
    di.style.left = bx;
    di.style.top = by + 10;
    di.style.visibility = 'visible';
    el.innerHTML = di;
    el.style.display = 'block';
}
function close_sk() {
    el = document.getElementById('qw');
    //el.innerHTML = '';
    el.style.display = 'none';
}
</script>
</head>
<body>
<div id="qw" onclick="close_sk()"></div>

<div id="sk0" style="visibility: hidden; position: absolute;">000000000</div>
<div id="sk1" style="visibility: hidden; position: absolute;">111111111</div>

<button id="skbut0" onclick="open_sk('0')">Button 1</button>
<br><br><center>
<button id="skbut1" onclick="open_sk('1')">Button 2</button>
</center>
</body>
</html>


Огромнейшее заранее спасибо!

ZoNT 13.11.2008 14:05

onclick="close_sk()" тогда уж надо на боди повесить.

Дмитрий С. 13.11.2008 14:14

ZoNT,
если повесить на боди див вообще не откроется, кнопка для открытия тоже в боди, ведь?

Я зарегистрировался, вот код с подсветкой:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<style type="text/css">
#qw
{
	position: absolute;
	top: 0px;
	left: 0px;
	width: 100%;
	height: 100%;
	display: none;
}
</style>

<script type='text/javascript'>
function findPosX(obj) {
	var currleft = 0;
	if (obj.offsetParent)
	while (obj.offsetParent) {
		currleft += obj.offsetLeft
		obj = obj.offsetParent;
	}
	else if (obj.x) currleft += obj.x;
	return currleft;
}

function findPosY(obj) {
	var currtop = 0;
	if (obj.offsetParent)
	while (obj.offsetParent) {
		currtop += obj.offsetTop
		obj = obj.offsetParent;
	}
	else if (obj.y) currtop += obj.y;
	return currtop;
}

function open_sk(x) {
	bx = findPosX(document.getElementById('skbut'+x));
	by = findPosY(document.getElementById('skbut'+x));
    el = document.getElementById('qw');
    di = document.getElementById('sk'+x);
    di.style.left = bx;
    di.style.top = by + 10;
    di.style.visibility = 'visible';
    el.innerHTML = di;
    el.style.display = 'block';
}
function close_sk() {
    el = document.getElementById('qw');
    //el.innerHTML = '';
    el.style.display = 'none';
}
</script>

</head>
<body>
<div id="qw" onclick="close_sk()"></div>

<div id="sk0" style="visibility: hidden; position: absolute;">000000000</div>
<div id="sk1" style="visibility: hidden; position: absolute;">111111111</div>

<button id="skbut0" onclick="open_sk('0')">Button 1</button>
<br><br><center>
<button id="skbut1" onclick="open_sk('1')">Button 2</button>
</center>
</body>
</html>

ZoNT 13.11.2008 14:49

так на кнопку надо стопПропогейшн делать и менять действие припоказе...

Дмитрий С. 13.11.2008 14:55

ZoNT,
Будьте добры в качестве примера, пожалуйста. Я знакомство с JS два дня назад начал =(

ZoNT 13.11.2008 15:21

времени нет примеры писать. погугли.

Kolyaj 13.11.2008 16:11

Мне вот интересно, тут каждый второй говорит, что он в js второй день, и хочет, чтобы ему написали простейший код. Яндекс для таких отменили чтоли? Я почему-то всегда находил ответы на свои вопросы. А если не находил, значит мало кто это знает, следовательно вероятность того, что на форуме ответят маленькая.

Дмитрий С.,
специально для вас:
Набираем http://yandex.ru/yandsearch?text=%D0...cript&from=fx3
видим на 4 месте этот же сайт http://javascript.ru/start/events/click
переходим к соответствующему пункту http://javascript.ru/start/events/cl...tsii-brauziera
втыкаем

Дмитрий С. 13.11.2008 17:59

Kolyaj,
Уважаемый, я не просил дать мне готовый скрипт. Я просил о любом примере.
мне написали стопПропогэйшен, я погуглил и набрал StopPropogation, смысл понял, но не понял как конкретно применить в деле.
Поэтому о примере и попросил.


...
if (event.preventDefault)
    event.preventDefault()
else
    event.returnValue= false
return false

это не поможет человеку, знающему язык на уровне "поставь фиговину сюда наугад"

Спасибо за помощь, тему можно закрыть.

Kolyaj 14.11.2008 10:42

Цитата:

Сообщение от Дмитрий С.
я не просил дать мне готовый скрипт.

А я про всех говорил.


Часовой пояс GMT +3, время: 16:33.