insertBefore Zeile nachträglich einschieben

Gibt es:
die DOM-Methode:
per createElement() ein HTML-Element erzeugen, dieses mit HTML-Attributen versehen und bspw. einen Textknoten dort einfügen.

die schlampige, aber einfache Methode: du änderst die innerHTML-Eigenschaft eines Knotens.
 
Hi,

Danke, habs mit der eleganteren DOM Variante gebacken bekommen..
Kannst Du mir noch nen kurzen Blick auf den Code werfen und einen Tipp geben, ob man das noch vereinfachen kann? (Ich finde es ehrlich gesagt sehr unübersichtlich):

PHP:
	/* Anlegen der neuen Zeile in der Tabelle */
	multiMediaLibraryTable = window.opener.document.getElementById('multiMediaLibraryTable');
	new_row = multiMediaLibraryTable.insertRow(1); /* Unterhalb der Header Zeile einfügen */
	
	/* Anlegen der Spalte "Bezeichnung" */
	new_cell_FileDescription = new_row.insertCell(0);
	new_cell_content_link = window.opener.document.createElement("a");
	new_cell_content_strong = window.opener.document.createElement("strong");
	new_cell_attribute_href = window.opener.document.createAttribute("href");
	new_cell_attribute_href.nodeValue = "testlink.php";
	new_cell_attribute_target = window.opener.document.createAttribute("target");
	new_cell_attribute_target.nodeValue = "_blank";
	
	new_cell_content_link.setAttributeNode(new_cell_attribute_href);
	new_cell_content_link.setAttributeNode(new_cell_attribute_target);

	new_cell_content = window.opener.document.createTextNode('<?PHP echo $fileAfterUpload['description']?>');
	new_cell_content_strong.appendChild(new_cell_content);
	new_cell_content_link.appendChild(new_cell_content_strong);
	
	
	new_cell_FileDescription.appendChild(new_cell_content_link);
	new_cell_FileDescription.className="tabListeLeft1";

Bin leider kein JS Guru.. eigentlich hasse ich es. Aber manchmal kommt man nun ja nicht daran vorbei :)
 
Naja...folgende Sachen könnten den Code entschlacken
  • das speichern des Dokument-Objektes in einer Variablen spart Schreibarbeit
  • auf das <strong> kannst du verzichten, formatiere den Link per CSS über den Selector td.tabListeLeft1 a
  • weise die Attribute direkt zu, anstatt erst Attributknoten zu erzeugen und einzuhängen

Ergebnis:
Code:
    objDoc                        = window.opener.document;
    new_row                       = multiMediaLibraryTable.insertRow(1); /* Unterhalb der Header Zeile einfügen */
    new_cell_FileDescription      = new_row.insertCell(0);
    new_cell_content_link         = objDoc.createElement("a");
    new_cell_content_link.href    = "testlink.php";
    new_cell_content_link.target  = "_blank";
    new_cell_content              =  objDoc.createTextNode('<?PHP echo $fileAfterUpload['description']?>');
    new_cell_content_link.appendChild(new_cell_content);
    new_cell_FileDescription.appendChild(new_cell_content_link);
    new_cell_FileDescription.className = "tabListeLeft1";


wenn du das ganze öfter brauchst, würde es sich wahrscheinlich besser machen, wenn du das mit Objekten machst...OOP gibts auch bei JS ;)
 
Zurück