berdn: cloneNode onclick

Hallo liebes Forum,

ich weise einen node z.B. einen 'p' ein onclick Event zu.

myNode.onclick = function(){deleteEntry(this); return false};

funktioniert wunderbar.

Nun dupliziere ich dieses Element mit cloneNode(true)

Funktioniert auch wunderbar, bis auf das onclick Event was nicht geklont wird.

Ist das normal?
Könnte ich mir gut vorstellen, da in Event ein JavaScript Attribut ist und von daher nicht mit geklont wird.

Oder liege ich da falsch und habe das onclick Event wohl eher unsauber eingebunden?

Liebe Grüße,

Bernd

Ich weise dann den geklonten Element noch mal das onclick Event Attribut, dann funktioniert es wieder,
aber darauf würde ich gerne verzichten.

  1. n'abend,

    Ist das normal?
    Könnte ich mir gut vorstellen, da in Event ein JavaScript Attribut ist und von daher nicht mit geklont wird.

    Richtig geraten. Events werden beim Duplizieren (leider|sinnvollerweise) nicht beachtet.

    Ich weise dann den geklonten Element noch mal das onclick Event Attribut, dann funktioniert es wieder,
    aber darauf würde ich gerne verzichten.

    Darauf wirst du leider nicht verzichten können.

    Um ein "abbrechen"-Verhalten zu ermöglichen, habe ich damals die Tabelle geklont und durchlief danach alle elemente um auch die events zu klonen. Etwas "unhandlich", erfüllte aber seinen Zweck.

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
  2. Hallo,

    Funktioniert auch wunderbar, bis auf das onclick Event was nicht geklont wird.

    Ist das normal?

    Ja.

    Könnte ich mir gut vorstellen, da in Event ein JavaScript Attribut ist und von daher nicht mit geklont wird.

    Ja, onclick ist eine einfache Objekteigenschaft, in der eine Funktion gespeichert ist.

    cloneNode ist eine DOM-Methode, sie kopiert alle DOM-relevanten Eigenschaften, aber keine arbiträren Objekteigenschaften.

    Oder liege ich da falsch und habe das onclick Event wohl eher unsauber eingebunden?

    Nein, das ist die Standard-Vorgehensweise.
    Auch beim Registrieren von Event-Handlern über die standardisierten DOM-Events-Methoden (addEventListener) werden die Handler beim Klonen gelöscht.

    Mathias

    1. Danke für die Hinweise,

      Auch beim Registrieren von Event-Handlern über die standardisierten DOM-Events-Methoden (addEventListener) werden die Handler beim Klonen gelöscht.

      Das hatte ich auch probiert ;-)

      Dann ist das so, aber schön das ich doch anfange zu Begreifen.

      Möge der DOM mit uns sein.

      Liebe Grüße,

      Bernd