Patrick Andrieu: bei klick auf Kind das Eltern-Event feuern

Beitrag lesen

Hallo Matze!

Die Frage war "wie", nicht "womit"!

Hm, habe mir Dein Ausgangsposting noch mal angeschaut. Erstens ist es mir nicht ganz verständlich, warum, wenn Du in der Tat nur ein Klick-Ereignis überwachen willst, Du dann nicht mit onclick arbeitest:

el.onclick = function() { tu_was... }

Bis zu while und parentNode sind wir ja nun schon vorgedrungen.

Ja und wo ist dann das Problem?

Ich habe Anfang des Jahres ein ziemlich komplexes Teil nachprogrammiert (anfangs wollte der Auftraggeber nur, dass ich sein Skript korrigiere - so kann's enden ;)), in dem es u.a. darum ging, TabellenZEILEN mit Formulardaten zu generieren, zu löschen und zu »moven«. Summenberechnungen wie MwSt. inkl./exkl., Rabattabzug, Artikelmengen o.Ä. kamen noch hinzu. Etwa so: Hat der User eine Zeile ausgefüllt, soll - und nur dann - eine weitere, zum ausfüllen bereite Zeile erscheinen. Zeilen dürfen gelöscht werden sowie nach oben oder nach unten bewegt werden. Jede Zeile hat eine Positionsnummer, die beim Löschen oder Moven natürlich angepasst werden muss.

Stell Dir also eine Tabellenzeile vor mit als erster Zellen-inhalt die Pos-Nr., etliche weiteren Zellen mit Inputs oder Selects für die User-Eingaben, und als vorletzte und letzte Zelle einen Move- und einen Lösch-Button.

Aufgabe: Beim Klicken aufs Löschbutton soll die Zeile gelöscht werden.

Dialog: Löschbutton: "Hilfe, User hat mich angeklickt, was nun?... hm, wo bin ich überhaupt? Wo sind meine Eltern, wo sind deren Eltern?":

var dieZelle = loeschbutton.parentNode; // -> seine Zelle
var dieZeile = loeschbutton.parentNode.parentNode // -> seine Zeile
var alleZellenDerZeile = loeschbutton.parentNode.parentNode.getElementsByTagName('td') // -> alle Zellen dieser Zeile
var position = alleZellenDerZeie.getElementsByTagName('td')[0].firstChild.data;

Die Löschfunktion benötigt noch den tbody:

var derTBody = dieZeile.parentNode; // (oder: loeschbutton.parentNode.parentNode.parentNode)

um löschen zu können:

derTBody.removeChild(dieZeile);

Vielleicht ist Dir dies ein Denkanstoß, ansonsten müsstest Du konkreter werden: was hast Du versucht, woran scheitert es?

Kannst aber auch gern nochmal Event-Bubbling in den Raum werfen.

Das tu ich nicht, da ich mich nicht weitgehend genug damit beschäftigt habe :)

Viele Grüße aus Frankfurt/Main,
Patrick

--
_ - jenseits vom delirium - _

   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?