[JS] Obsługa mouse events

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
nataniel
Posty: 8
Rejestracja: śr wrz 16, 2009 8:20 pm

[JS] Obsługa mouse events

Post autor: nataniel »

Witam
Prosze o pomoc w nastepujacej sprawie.
Otóż mam DIVa jak poniżej:

CSS:

Kod: Zaznacz cały

div#button {
 width:20px;
 height:20px;
 background-color:#000000 //kolor01 }
HTML:

Kod: Zaznacz cały

<div id="button"> </div>
Jak napisac pojedynczą funkcję w JavaScript,
- żeby po najechaniu myszą na DIVa kolor jego tła zmienał się na kolor02,a po opuszczeniu obszaru diva kolor powracał na kolor01 (MouseOver/ MouseOut)
- po kliknieciu na DIVa kolor jego tła zmienił się na kolor03 i pozostał taki dopóki nie klikniemy gdzies poza obszarem tego diva, (MouseClick)
- jesli DIV jest 'kliknięty' to kolor nie zmienia się gdy najeżdżamy na niego myszą.

Chodzi o napisanie jednej funkcji operującej na id obiektu ( document.getElementById('button') ).
Żeby nie pisać paciorka w divie (<div onClick="funkcja1" onMouseOver="funkcja2" onMouseOut="funkcja3" itd itd)

Proszę o pomoc w tej sądzę prostej sprawie ale jestem początkujący i sprawa mnie przerasta. po długich nieudanych próbach zwracam sie o pomoc do fachowców. ;)
POMOCYYYYY
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

Re: [JS] Obsługa mouse events

Post autor: slawko »

Możesz użyć stylów css do tego, tylko ściągnij sobie plik csshover.htc by działał ci pod ie6
musisz go dodać do arkusza stylów

Kod: Zaznacz cały

 body {
behavior: url(csshover.htc);
 }

Kod: Zaznacz cały

div#buttom:hover{
width:20px;
height:20px;
background-color:#000000; //kolor01 
}
po najechaniu myszką

Kod: Zaznacz cały

div#buttom:active{
width:20px;
height:20px;
background-color:#000000; //kolor02 
}


po kliknieciu
nataniel
Posty: 8
Rejestracja: śr wrz 16, 2009 8:20 pm

Re: [JS] Obsługa mouse events

Post autor: nataniel »

hello
pierwsze od czego zacząłem żeby to zrobić to właśnie CSS.
Dlatego poszedłem w stronę JavaScript

:active działa tylko w momencie kliknięcia. Podejrzewam, że :hover przysłania swoim działaniem :active kiedy zwolnimy przycisk myszy.

Chodziło mi o to, żeby po kliknięciu w diva kolor sie zmienił i pozostał taki do momentu ponownego klikniecie gdzies poza jego obszarem albo na nim (pod warunkiem, ze został klikniety)

chodzi mi o wychwycenie tych eventów w JS:

Kod: Zaznacz cały

var obj = document.getElementById('button');

if(warunek sprawdzajacy czy najechano myszą && div nie jest klikniety)
{
obj.style.background-color="kolor1";
}

if(warunek sprawdzajacy czy kliknięto na diva && div nie jest klikniety)
{
obj.style.background-color="kolor2";
}
else 
{
obj.style.background-color="kolor0";
}


if(warunek sprawdzajacy czy mysz opuszcza diva && div nie jest klikniety)
{
obj.style.background-color="kolor0";
}



jak wychwycić te zdarzenia myszy w JS ?
nie wiem co pisać w tych warunkach if/ jak to zakodować
HELP
nataniel
Posty: 8
Rejestracja: śr wrz 16, 2009 8:20 pm

Re: [JS] Obsługa mouse events

Post autor: nataniel »

To miałoby wygladać mniejwięcej tak:

Kod: Zaznacz cały

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

<style type="text/css">
body    {     behavior:url("csshover.htc");    }
div#button {
width:20px;
height:20px;
background-color:#000000;
}



</style>



</head>

<body>

<div id="button"> </div>
<script type="text/javascript"> 

var m=false;

document.getElementById('button').onclick = function () {
	if(!m) {
		m=true;
		document.getElementById('button').style.background="#cccccc";
	}
	else {
		m=false;
		document.getElementById('button').style.background="#000000";
	}
}


document.getElementById('button').onmouseover = function () {
	if(!m) {
		document.getElementById('button').style.background="#505050";
	}
}

document.getElementById('button').onmouseout = function () {
	if(!m) {
		document.getElementById('button').style.background="#000000";  
	}
}

</script> 

<br>
<br>


</body>
</html>

tylko dlaczego jak sekcje <script> umieszcze w <HEAD> albo w oddzielnym pliku *.js to funkcje JS nie działają ?

Ogólnie potrzebuje wiedziec jak sprawdzic jakie zdarzenie myszy zaszlo na obiekcie o danym ID zeby przypisac odpowiednie funkcje do wychwyconych zdarzeń.

Zmierzam do tego aby zrobic sobie rozwijane menu.
mam 2 divy BUTTON i WINDOW.

Klikajac button to pokazuje sie window. Window znika jak ponownie klikne na button albo gdzies poza window
ehh masakra
ODPOWIEDZ