Kevin Marks: onmousedown nur in div gültig

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

  1. 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

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. 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

  3. @@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'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  4. 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