Der Text wird aus dem Eingabefeld in das Ausgabefeld übertragen.
getElementById ist die meistgebrauchte Zugriffsmethode auf ein Element.
Der Funktion wird die ID des Elements übergeben. Es wird die Struktur des Elements zurückgeliefert.
Je nach Element kann man dann mit value z.B. beim input-Element, oder mit firstChild.nodeValue z.B. bei p-Elementen
auf den Inhalt zugreifen oder diesen setzen.
In der Regel weiß man welches Element man hat. Ist dies micht bekannt, wie z.B. bei der Anwendung
mehrsprachige WEB-Seite kann mit
document.getElementById("ID").hasChildNodes() abgefragt werden ob es childNodes gibt.
Wenn ja muss mit document.getElementById("ID").firstChild.nodeValue gearbeitet werden, sonst mit value.
Mit querySelector oder querySelectorAll kann man die Elemente mit den CSS-Selectoren ansprechen.
Hier eine Liste, bei der jeder Eintrag ein Link ist. Wird auf den Link geklickt wird in einem Fenster
die komplette Liste angezeigt und der selectierte Eintrag markiert. Sinnvoll ist das, um nicht nur den
geklickten Eintrag zu verarbeiten, sondern die komplette Liste. Siehe dazu
auch Auswahlliste mit DOM bearbeiten
Oft wird eine Tabelle angezeigt, aus der dann ein Datensatz ausgewählt werden kann und diesen z.B. in einem
Formular bearbeiten zu können. Beispiel unter Accountverwaltung.
Spalte 1
Spalte 2
Spalte 3
Z1S1
Z1S2
Z1S3
Z2S1
Z2S2
Z2S3
Z3S1
Z3S2
Z3S3
In der Tabelle hat jede Datenzeile eine ID trID. Wenn die Tabelle aus AJAX erstellt wird, bietet sich
hierzu die Satz-ID aus der Datenbank an. In diesem Beispiel wurde tr1017, tr1018 und tr1019 gesetzt.
Auf jede ID wurde ein Eventlistener installiert, der die Funktion tabBearbeiten aufruft.
Beim Klick in eine Zelle wird das Event von td an tr weitergegeben.
Damit wird die Funktion des Eventlistener von tr aufgerufen. Allerdings wird hier auch die ID der Zelle übergeben.
Deshalb hat jede Zelle eine ID bekommen - td00 und die SatzID - also für Spalte 1 td001017, td001018, td001019
und für Spalte 2 td011017, td011018, td011019 usw.
In der Funktion tabBearbeiten wird aus der übergeben ID (z.B. td001018) mit substr die Satz-ID ermittelt (1018).
Mit document.querySelector("#tr" und der Satz-ID wird auf die Zeile positioniert.
Mit cells[NR].firstChild.nodeValue wird der Inhalt der Zelle gelesen. NR beginnt bei 0
Wird nur der Inhalt der geklickten Zelle benötigt, kann mit document.querySelector der übergeben target.id und
firstChild.nodeValue dieser direkt gelesen werden (siehe v_zellInhalt).
Nach der Eingabe von Spalten und Zahlen werden die Elemente mit DOM in einem div hinzugefügt.
Bei den Spalten wird ein Eventlistener erzeugt, der die Funktion klickZelle aufruf.
Damit der Link die ganze Zelle einnimmt muss in CSS beim adisplay:inline-block; gesetzt werden.
Damit in der Funktion klickZelle wieder auf den Zelleninhalt zugegriffen werden kann
setze ich den Inhalt als ID. In der Funktion kann dann mit eventObjekt.target.id auf den
Zelleninhalt zugegriffen werden. Dies z.B. beim Kalender nützlich.
Je nach Anwednungsfall kann man auch eine ID auf die Zeile (Element tr) legen.
Dies bietet sich bei Datensätzen an, wenn man so wie so eine ID hat, kann man die ID trID setzen.
Dann kan man mit querySelector oder querySelectorAll auf die Tabelle zugreifen.
Siehe dazu den folgenden Artikel Tabelle mit DOM lesen.
Button Erstellen
Es wird eine Tabelle mit Anzahl Spalten und Anzahl Zeilen eingefügt.
Die Tabelle wird mit der Funktionen addElement erzeugt. Siehe auch die Beschreibung dazu.
Der selektierte Eintrag in Auswahl wird nach Eingabe übernommen.
Wie folgt kann auf die Auswahl der Box zugegriffen werden.
pos = document.getElementById("auswahl").selectedIndex; Selectierter Indexwert Erster Eintrag = 0
id = document.getElementById("auswahl").value; Id = Parameter 2 der Auswahl
text = document.getElementById("auswahl").options[pos].text; Text = Parameter 1 der Auswahl
Mit der Funktion aboxSel wird der selectierte Eintrag in das Feld Eingabeübernommen.
Mit value wird der zweite Parameter (ID) aus new Option übertragen.
Um auf den Text zugreifen zu können, muss der selektierte Eintrag über
selectedIndex gelesen werden. Mit options[v_pos].text wird dann der angezeigte Inhalt gelesen.
Hier ist beschrieben, wie mit DOM auf eine Auswahlliste zugegriffen werden kann und zwischen gewählten und
nicht gewählten Einträgen gewechselt wird. Statt den ul_Listen kann auch das zuvor beschriebene
select-Element verwendet werden.
Die Auswahlliste ist eine ul-Liste in einem div.
Mit Lesen wird eine XML-Datei mit den Werten eingelesen.
In der Praxis wird dies ein AJAX-Aufruf in eine Datenbank sein. Dabei ist es sinnvoll bei einer Änderung die Liste
über Ajax neu einzulesen und die Listen neu aufzubauen. Dies bewirkt aber einen Datentransfer, der sich auf die
Reaktionszeit auswirken kann.
Sind die Daten schon mal auf dem Client kann mit den vorhanden Einträgen gearbeitet werden.
Dabei gibt es die Möglichkeit die Listeneinträge direkt zu verwenden oder die Listen in ein Array einzulesen.
Die Arrayvarianten ist besser zu handhaben und wird von mit bevorzugt.
Da es bei den Listen kein "Selected Eintrag" gibt, kann eine Funktion nur mit Klick auf den Eintrag durchgeführt werden.
Direkte Bearbeitung der Listeneinträge
Mit dem Button Liste lesen wird die Funktion alisteLesenDirekt aufgerufen. Diese Funktion erzeugt den Ajax-Request um die Datei
aliste.xml zu lesen. Ist die Datei gelesen wird mit der Funktion alisteShowDirekt die Daten in die jeweiligen
div aufgenommen und angezeigt. Normalerweise wird der AJAX-Request aus einer Datenbank lesen.
Klick auf einen Eintrag verschiebt den Eintrag von Gewählte Einträge nach Nicht gewählte
Einträge bzw. umgekehrt.
Bei der Erstellung der Einträge wurde für jeden Eintrag eine ID hinterlegt. Die ID ist der Eintragtext.
Dies funktioniert natürlich nur bei eindeutigen Einträgen.
Aber Mehrfacheinträge in einer Auswahlliste sind eh sinnlos.
Für jeden Eintrag wurde ein Eventlisterner installiert. Dabei rufen die Evenlistener für die gewählten Einträge
die Funktion alisteAendernDirektG auf und die Evenlistener für die nicht gewählten Einträge
die Funktion alisteAendernDirektN auf.
In diesen beiden Funktionen wird die Variable v_eintrag über das Eventobjekt mit der ID aus dem angeklickten
Eintrag belegt. Die beiden Variablen v_add und v_del werden mit der jeweiligen ID des div für gewählte Gruppen
und für nicht gewählte Gruppen belegt. Mit diesen drei Variablen wird die Funktion alisteAendernDirekt
zur Änderung der Gruppen aufgerufen.
In der Funktion alisteAendernDirekt werden mit document.querySelector und der übergebenen ID die
ul-Elemente für die beiden Listen gelesen.
Dann wird mit document.querySelectorAll alle Einträge der entsprechenden Liste gelesen.
Jetzt wird an die Liste bei der der Eintrag hinzugefügt werden soll ein li-Element angehängt. Anschließend wird die Liste
von hinten gelesen und solange der neue Eintrag größer ist als der aktuelle, der aktuelle Eintrag eins nach hinten geschoben.
Damit wird der neue Eintrag einsortiert.
Bei der Liste, in die geklickt wurde, wird auf den geklickten Eintrag positioniert. Dann wird bis zum Ende der Liste der
nächste Eintrag um eins nach oben geschoben und der letzte Eintrag gelöscht.
Mit dem Button Liste lesen wird die Funktion alisteLesenArray aufgerufen. Diese Funktion erzeugt den Ajax-Request um die Datei
aliste.xml zu lesen. Ist die Datei gelesen, wird mit der Funktion alisteArray die Treffer in ein Array eingetragen.
Zu jedem Eintrag wird gespeichert, ob er gewählt ist oder ob er nicht gewählt ist.
Normalerweise wird der AJAX-Request aus einer Datenbank lesen.
Danach werden mit der Funktion alisteAnzeigenArray die Daten angezeigt. Ist der zweite Eintrag des Array ja wird der
Eintrag in gewählte Einträge angezeigt.
Ist der zweite Eintrag des Array nein wird der Eintrag in nicht gewählte Einträge angezeigt.
Klick auf einen Eintrag verschiebt den Eintrag von Gewählte Einträge nach Nicht gewählte
Einträge bzw. umgekehrt.
Bei der Erstellung der Einträge mit der Funktion alisteAnzeigenArray wurde für jeden Eintrag eine ID hinterlegt.
Die ID ist der Eintragtext. Dies funktioniert natürlich nur bei eindeutigen Einträgen.
Aber Mehrfacheinträge in einer Auswahlliste sind eh sinnlos.
Für jeden Eintrag wurde ein Eventlisterner installiert der die Funktion alisteAendernArray aufruft.
In dieser Funktion wird das Array durchlaufen. Wenn der Arrayeintrag mir der ID des gewählten Eintrags übereinstimmt
wird der Modus von ja in nein oder von nein in ja geändert.
Danach wird mit der Funktion alisteAnzeigenArray die Daten in den jeweiligen Listen neu angezeigt.
Die Funktion liest den Text und die Attribute des Absatze mit der id absatz1
Die Farbe wird erst angezeigt, wenn sie auch explizit mit Javascript gesetzt wurde.
Um CSS-Attribute zu lesen, die nicht explizit mit JavaScript gesetzt wurden, wird window.getComputedStyle(element) verwendet.