onmousedown nur in div gültig
Kevin Marks
- javascript
1 ChrisB0 JürgenB0 Gunnar Bittersmann0 Don P
Hi!
Ich bin noch neu in Javascript daher bitte ich um nachsicht ;-)
Mein Problem ist folgendes, ich habe eine Seite mit mehreren Div Containern (um genau zu sein 5), jetzt habe ich eine Funktion geschrieben welche über document.onmousedown ausgeführt wird (die Funktion bringt ein ball auf die position auf der geklickt wurde). Das klappt auch ganz gut, nur möchte ich das die Funktion nur dann startet wenn man in einem bestimmten Div klickt, klickt man woanders hin sollte nichts passieren. Nur wie mach ich das?
Hilfe :-(
Lieben Dank,
Kev
Hi,
ich habe eine Seite mit mehreren Div Containern (um genau zu sein 5), jetzt habe ich eine Funktion geschrieben welche über document.onmousedown ausgeführt wird (die Funktion bringt ein ball auf die position auf der geklickt wurde). Das klappt auch ganz gut, nur möchte ich das die Funktion nur dann startet wenn man in einem bestimmten Div klickt, klickt man woanders hin sollte nichts passieren. Nur wie mach ich das?
Entweder, in dem du den Event statt am document an jedem einzelnen dieser DIV-Elemente überwachst - oder, etwas mehr “state-of-the-art”, in dem dich des Prinzips der Event Delegation bedienst. Dabei überwachst du den Event nach wie vor an einem übergeordneten Element - schaust dir dann aber an, was das eigentliche Primärziel des Events war (daran kommst du über event.target [bzw. die proprietäre Eigenschaft des Browsers, der Events leicht abweichend handelt - SuMa weiss mehr]), und entscheidest davon abhängig, ob und wie du diesen Event weiter behandeln möchtest.
MfG ChrisB
Hallo Kevin,
du musst den Eventhandler nicht an das Dokument, sondern an das Div "hängen". Dazu benötigst du Zugriff auf das Div. Am besten geht das meiner Meinung nach über die ID:
<div id="sinnvolleID"> .... </div>
Da du auf das Div erst zugreifen kannst, wenn es existiert, musst du den Scriptteil entweder hinter dem Div notieren oder warten, bis das Dokument geladen ist:
window.onload = function() { // anonyme Funktion, die nach dem Laden
// aufgerufen wird
document.getElementById("sinnvolleID").onmousedown = deineFunktion;
}
Gruß, Jürgen
@@Kevin Marks:
nuqneH
jetzt habe ich eine Funktion geschrieben welche über document.onmousedown ausgeführt wird
Funktioniert das in allen Browsern? Üblicherweise registriert man solche Evenhandler für das'window'- oder 'document.body'-Objekt.
nur möchte ich das die Funktion nur dann startet wenn man in einem bestimmten Div klickt, klickt man woanders hin sollte nichts passieren. Nur wie mach ich das?
Indem du den Eventhandler eben nicht für 'document' ('window'/'document.body') registrierst, sondern für das gewünschte Element:
document.getElementById("foo").onmousedown = bar;
Qapla'
Hallo,
Hi!
Ich bin noch neu in Javascript daher bitte ich um nachsicht ;-)
Hallo,
jetzt habe ich eine Funktion geschrieben welche über
document.onmousedown
ausgeführt wird [...]
nur möchte ich das die Funktion nur dann startet wenn man in einem bestimmten Div klickt
Nur wie mach ich das?
Z.B. indem du deinen onmousedown
-Handler nicht an das document
, sondern an das DIV bindest, in welchem die Show stattfinden soll.
Du kannst es mit einer http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=getElement@title=getElement(s)By...-Methode des document
-Objekts ermitteln.
Gruß, Don P