Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Необходима помощь с событиями (https://javascript.ru/forum/server/19485-neobkhodima-pomoshh-s-sobytiyami.html)

heihachi88 05.08.2011 20:59

Необходима помощь с событиями
 
Имеется следующий HTML код:

<div id="hoverthis">Наведите мышью сюда</div>
<div id="box">Всплывающий див</div>


У меня не получается сделать следующее - при наводке на #hoverthis → появляется #box с контентом, а затем при щелчке на любом элементе страницы кроме #hoverthis и #box, див #box исчезал.

А также при onmouseover на #hoverthis нужно добавлять css класс .active. Этот класс должен исчезать когда #box исчезает.

window.onload = function() {
	document.getElementById('hoverthis').onmouseover = function() {
		openbox('box', this);
		return false;
	};
	document.getElementById('hoverthis').onmouseout = function() {
		openbox('box', this);
		return false;
	}
};
function openbox(id, hoverthis) {
	var div = document.getElementById(id);
	if(div.style.display == 'block') {
		div.style.display = 'none';

	}
	else {
		div.style.display = 'block';

	}
}


Наведите меня на путь истинный, спасибо :)

devote 06.08.2011 10:23

function addEvent( elem, evt, callback ) {
	if ( elem.addEventListener ) {
		elem.addEventListener( evt, callback, false );
	} else if ( elem.attachEvent ) {
		elem.attachEvent( "on" + evt, callback );
	}
}

function clearEvent( e ) {
	e = e || window.event
	if (e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	if (e.preventDefault) e.preventDefault();
	else e.returnValue = false;
}

window.onload = function() {

	var elem = document.getElementById('hoverthis');

	addEvent( elem, "mouseover", function() {
		var box = document.getElementById('box');
		box.className = 'active';
		box.style.display = 'block';
		return false;
	});
	addEvent( elem, "click", function( e ) {
		clearEvent( e );
		return false;
	});
	addEvent( document.getElementById('box'), "click", function( e ) {
		clearEvent( e );
		return false;
	});

	addEvent( document, "click", function() {
		var box = document.getElementById('box');
		box.className = '';
		box.style.display = 'none';
		return false;
	});
};

примерно так)


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