Portál AbcLinuxu, 23. července 2025 03:23


Dotaz: js onclick

2.1.2009 15:54 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
js onclick
Přečteno: 162×
Odpovědět | Admin
V js jsem si udělal kalendář zobrazující se nad dokumentem a pro jeho zavření při kliku kdekoliv v dokumentu jsem si vytvořil tento kód:
document.onclick=function() {
				if(document.getElementById('calendar')) {
					document.getElementById('calendar').parentNode.removeChild(document.getElementById('calendar'));
				}
			}
Jenomže mi to dělá i při kliknutí do toho kalendáře i když jsem si to tam zablokoval pomocí:
var div=document.createElement('div');
			div.setAttribute('class','calendar');
			div.setAttribute('id','calendar');
			div.onclick=function() {
			}
Jde to nějak udělat, aby se mi ten kalendář zavřel pouze při kliknutí mimo ten kalendář?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.1.2009 16:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: js onclick
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přečtěte si něco o „probublávání“ událostí v HTML/DOM (např. na QuirksMode). Při kliknutí na nějaké místo v zobrazeném dokumentu se prochází elementy postupně od kořenového elementu směrem ke konkrétnímu elementu, kde ve kterém došlo ke kliknutí, a zase zpět ke kořenovému elementu – a na všech elementech se postupně volají nastavené ovladače události onclick. Máte dvě množnosti – buď v ovladači událostí pro kalendář zastavit probublávání, nebo v ovladači na kořenovém elementu testovat, zda kliknutí bylo v kalendáři nebo mimo něj. Pozor na to, že v obou případech narazíte na rozdíly mezi MSIE a W3C modelem zpracování události – ale na tom QuirksMode je to vše dobře popsané.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.