LX: Tabellen editieren in verschiedenen Browsern

Beitrag lesen

// Set onclick method
        cell.attributes["onclick"].value = "editCelltoText('"+id+"')";
        cell.onclick = "editCelltoText('"+id+"')";

Die Methode onclick wird als Funktion aufgerufen. Firefox ist übertrieben gutmütig, diesen Aufruf per String-Übergabe trotzdem umzusetzen, der IE verhält sich ausnahmsweise einmal korrekt.

Richtig müßte es heißen:

cell.onclick = function(id) { return function() { editCelltoText(id); }}(id);

Beachte insbesondere die Closure (Verkapselung der Funktion), damit id korrekt übergeben werden kann, denn ansonsten kann es passieren, dass die Variable innerhalb der Funktion nicht referenziert werden kann. Eleganter wäre jedoch auf Dauer die Verwendung von "this".

Lese Dich in Objektorientierung bei JavaScript ein und nutze sie zu Deinem Vorteil. Dann kannst Du evtl. auch die Zellen mit modernen DOM-Aufrufen erstellen (bitte den tbody nicht vergessen, sonst mag IE nicht).

Gruß, LX

--
X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: Unusual
X-Please-Search-Archive-First: Absolutely Yes