Zur Navigation

Neue Tabellenzeile per Klick einfügen [3]

21 Jerry02

jetzt wird angezeigt:

Node was not found" code: "8

aber das problem lag definitiv an dem "s"

20.08.2010 16:21

22 Jerry02

aber irgendwie definiere ich ja im moment nur zwei variablen: Knoten und loesche!? kann das sein?

20.08.2010 16:23

23 Jörg

Hier definierst du Knoten als Tabelle2:

var Knoten = document.getElementById("Tabelle2");

Diese ist aber ja das Elternelement selbst - und nicht das Kindelement, welches du löschen möchtest

So etwas würde z.B. gehen:

var Knoten = document.getElementById("Tabelle2").lastChild;

20.08.2010 19:59 | geändert: 20.08.2010 20:00

24 Jerry02

wunderbar jetzt klappt das löschen!
nur jetzt ist noch das problem, dass egal auf welchen löschen button ich klicke, es wird immer die letzte zeile gelöscht und nicht die zeile wo ich auf den löschen button geklickt habe!
gibt es dafür auch noch eine lösung, oder sieht es damit schlecht aus?

23.08.2010 10:08

25 Jerry02

ich glaub ich hab eine idee! wenn ich vom löschen button ausgehe und dort den parentnode nehme dann müsste ich doch dann in der zeile ankommen oder!?
nur wie mach ich das? hab schon wieder probiert aber nichts hat geklappt :(

23.08.2010 10:44

26 Jörg

Man benötigt dazu wohl eine ID der tr, um diese ansprechen zu können

Dazu kannst du am Anfang vomn Aendern() die Anzahl der Childs ermitteln:

var numNodes = document.getElementById("Tabelle2").childNodes.length;

Das übergibst du als Argument in loeschen():

var Aktion = '<a href="javascript:Kursaendern()">Kurs ändern</a>  <a href="javascript:Anzahlaendern()">Anzahl ändern</a>  <a href="javascript:loeschen(' + numNodes + ')">löschen</a>';

... und erzeugst eine entsprechende ID für dei neue tr:

		var newTR = document.createElement("tr");
		document.getElementById("Tabelle2").appendChild(newTR);		
		document.getElementById("Tabelle2").lastChild.id="tr" + numNodes;

in loeschen() kannst du das übergebene Argument auswerten, um gezielt die betreffende Zeile zu löschen:

function loeschen (rowid)
	
	{
		var Knoten = document.getElementById("tr" + rowid);
		document.getElementById("Tabelle2").removeChild(Knoten);
	}

23.08.2010 11:01

27 Jörg

Nachtrag:

mir fällt grad ein, dass es keine so gute Idee ist, geordnete IDs zu vergeben, wenn zwischendrin gelöscht wird - beim Hinzufügen neuer Tabellenzeilen werden dann gegebenenfalls doppelte IDs vergeben

Besser wäre es, eindeutige IDs z.B. aus einem Timestamp zu generieren:

		var newDate = new Date();
		var timestamp = newDate.getTime();

... und "timestamp" dann an Stelle von "numNodes" verwenden...

23.08.2010 11:13 | geändert: 23.08.2010 11:13

28 Jerry02

Das ist ja Wahnsinn! So viel Geudlt wie sie mit mir haben hat echt keiner!:)
jetzt hab ich ja noch das problem mit dem Kurs und Anzahl ändern, das könnte ich doch dann ähnlich machen oder!? müsste ja dann nur der td eine id zuweisen?
ok ich probier lieber erstmal bevor Sie sich wieder Umstände machen wegen mir!

P.S.: stimmt so wie sie es mir vorher erklärt haben hat es zwar auch geklappt, aber es gab machnmal fehler! jetzt funktioniert es super! Vielen Dank nochmal für Ihre Gedult!

23.08.2010 11:22

29 Jerry02

hm...so richtig weite komme ich nicht!
hab mir jetzt gedacht man könnte das so aufbauen:
function Anzahlaendern (rowid)
	{
		var Anzahlaendern = prompt ("Hier die neue Anzahl eingeben.", "");
		document.getElementById("td" + rowid).replaceData(Kursaendern);
	}

um z.B. die Anzahl zu ändern, aber das funktioniert überhaupt nicht!
haben sie vielleicht noch einen kleinen lösungsansatz, um das problem zu lösen?
ich müsste ja jetzt irgendwie jeder zelle aus der spalte Stueck eine eigene id zuweisen, wie das davor für jede Zeile geschehen ist.

23.08.2010 11:59

30 Jerry02

das müsste ja dann wieder einen innerHTML Befehl am Ende stehen haben, oder?

23.08.2010 13:43