Zugriffe auf Klassen mit JavaScript im Browser (Zugriffe auf Klassen mit JavaScript im Browser), Lektion, Seite 723381
https://www.purl.org/stefan_ram/pub/klassenzugriffe_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Zugriffe auf Klassen in JavaScript  unter Firefox 49 

Hinweis für den Dozenten  ► Hier Klassen in SIL kurz erklären: Es handelt sich praktisch um id's, die aber auch mehrfach verwendet werden dürfen.

Das DOM  enthält auch spezielle Wirkfunktion zum Einwirken auf die Klassen eines Elements und spezielle Meßfunktionen, um die Klassen eines Elements zu ermitteln.

In HTML  können Klassen zur Kennzeichnung von Elementen verwendet werden. Anders als bei Kennungen ist es dabei erlaubt, daß eine Klasse mehreren Elementen oder ein Element mehreren Klassen zugeordnet werden kann.

Beispieldokument für diese Lektion

userpage.fu-berlin.de/~ram/pub/xhtml_jf47ht81Ht/723551

userpage.fu-berlin.de/~ram/pub/html_jf47ht81Ht/723551

main.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" /><title>Main</title><style type="text/css">

html { font-family: Sans-Serif; font-size: 20vmin; font-weight: bold; }
[href] { background-color: lavender; }
.r { color: palegreen; }

</style></head><body>

<p>0 <a id="a">1</a> 2</p>

<pre><code><script>/*<![CDATA[*/

/*]]>*/</script></code></pre></body></html>

Wir definieren zunächst eine Abkürzung für den Anker.

Auswertung
a = document.getElementById( "a" )
<a id="a">

Nun definieren wir eine Abkürzung für die Liste der Klassen des Ankers.

Auswertung
c = a.classList
DOMTokenList [  ]

Der Name »c« ist durch die Zuweisung an die Klassenliste des Dokuments gebunden worden, so daß Veränderungen an »c« sich sofort auf das Dokument auswirken.

Mit »toggle« wird eine Klasse in der Klassenliste „umgeschaltet“: Das heißt, daß sie hinzugefügt wird, falls sie noch nicht in der Klassenlisten vorkommt, und sonst aus der Klassenliste entfernt wird.

Auswertung
a.outerHTML
"<a xmlns="http://www.w3.org/1999/xhtml" id="a">1</a>"
Auswertung
a.getAttribute( "class" )
null
Auswertung
c.toggle( "r" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r">1</a>"
Auswertung
a.getAttribute( "class" )
"r"

Die Klassenliste kann in der Konsole auch direkt angezeigt werden.

Auswertung
c
DOMTokenList [ "r" ]

Durch ein erneutes »toggle« kann die angegebene Klasse »r« wieder aus der Klassenliste entfernt werden.

Auswertung
c.toggle( "r" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="">1</a>"

Genau falls von einem »toggle« die Klasse hinzugefügt wurde, ist der Wert jenes hinzufügenden »toggle« gleich »true«.

Auswertung
c.toggle( "r" );
true
Auswertung
c.toggle( "r" );
false

Man beachte, daß das Umschalten der Klasse mit »toggle« auch im Hauptfenster des Browser an einer Änderung der Schriftfarbe  erkennbar ist.

Um mit JavaScript  das Erscheinungsbild eines Elements (einer Webseite) zu verändern, gibt oder nimmt man diesem Klassen, für die man entsprechende CSS -Regeln festlegt. Insbesondere kann ein Element auf diese Weise auch sichtbar oder unsichtbar gemacht werden.

Mit »add« wird sichergestellt, daß ein Element eine bestimmte Klasse hat.

Auswertung
c.add( "r" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r">1</a>"

Wenn das Element die Klasse schon hat, ändert ein »add« nichts.

Auswertung
c.add( "r" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r">1</a>"

Auch weitere Klassen können hinzugefügt werden.

Auswertung
c.add( "s" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r s">1</a>"
Auswertung
a.getAttribute( "class" )
"r s"

Es ist ebenfalls möglich, mehrere Klassen mit einem Aufruf hinzuzufügen. (»toggle« kann hingegen nur mit einem Argument aufgerufen werden.)

Auswertung
c.add( "x", "y", "z" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r s x y z">1</a>"

Einzelne Klassen können auch wieder gezielt entfernt werden.

Auswertung
c.remove( "y", "z" ); a.outerHTML;
"<a xmlns="http://www.w3.org/1999/xhtml" id="a" class="r s x">1</a>"

Die Funktion »contains« erlaubt es, auszusagen, daß eine Klasse in der Klassenliste enthalten ist.

Auswertung
c.contains( "z" )
false
Auswertung
c.contains( "r" )
true

Verbundene Listen

Das Objekt »c« ist eine verbundene Liste (“live list ”), das heißt, daß diese Liste mit dem DOM verbunden ist, so daß Änderungen an der Liste sofort im DOM erscheinen und Änderungen am DOM sofort in der Liste erscheinen.

Übungsaufgaben

Zur Erleichterung der Bearbeitung können Sie an Stelle von »document.getElementById« auch weiterhin NAOTWO  zum Elementzugriff verwenden, oder erst zum Schluß – nachdem die Aufgabe gelöst ist – NAOTWO  durch den Einsatz von »document.getElementById« ersetzen.

Zur Erleichterung der Bearbeitung können Sie an Stelle von »addEventListener« auch weiterhin on-Attribute verwenden, also beispielsweise an Stelle von »span.addEventListener( "click", () => span.innerHTML = 1 );« in einem Skript-Element »onclick="span.innerHTML=1"« als Attribut des span-Elements.

Durch NAOTWO  (“named access on the window object ”, NAOTWO, sprich “now two ”) werden die im HTML-Quelltext mit »id=« festgelegten Elementkennungen, falls möglich, in JavaScript  als globale Namen zur Verfügung gestellt. (Siehe auch: https://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object).
Unter HTML-Quelltext  versteht man Text, der in HTML geschrieben wurde – also beispielsweise »id=« enthält. – Etwa im Gegensatz zu der von einem Browser angezeigten Webseite.

Zur Erleichterung der Bearbeitung können Sie bei Übungsaufgaben in den folgenden Lektionen an Stelle von polyglottem HTML  auch weiterhin SIL verwenden. Dabei kann vor den SIL-Code ein style-Element gesetzt werden und hinter den SIL-Code ein script-Element. Die drei leeren Zeilen in dem folgenden SIL-Dokument können jeweils mit CSS -Code, HTML-Code beziehungsweise JavaScript -Code befüllt werden.

Main.html

<style>

</style>

<script>


</script>

Durch NAOTWO  (“named access on the window object ”, NAOTWO, sprich “now two ”) werden die im HTML-Quelltext mit »id=« festgelegten Elementkennungen, falls möglich, in JavaScript  als globale Namen zur Verfügung gestellt. (Siehe auch: https://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object).
Unter HTML-Quelltext  versteht man Text, der in HTML geschrieben wurde – also beispielsweise »id=« enthält. – Etwa im Gegensatz zu der von einem Browser angezeigten Webseite.

/   Übungsaufgabe

Laden Sie das oben angezeigte Dokument zunächst in einen Editor, so daß Sie es dort überarbeiten können.

Fügen Sie eine CSS -Regel für eine Klasse »unsichtbar« zum Dokument hinzu, so daß Elemente mit dieser Klasse nicht angezeigt werden.

Fügen Sie diese Klasse dann von der Konsole aus zum Anker-Element hinzu und entfernen Sie sie wieder vom Anker-Element und beobachten Sie dabei, wie das Element abwechselnd verschwindet beziehungsweise wieder erscheint.

/   Übungsaufgabe

Fügen Sie eine Funktion namens »switch« zum Anker-Element hinzu, welche die Klasse unsichtbar umschaltet und rufen Sie diese dann wiederholt auf.

Das Hinzufügen von Funktionen zu DOM -Verzeichnissen wird hier nur zu Übungszwecken  behandelt. Es ist für die Praxis nicht zu empfehlen, da DOM -Verzeichnisse sich anders als normale JavaScript -Verzeichnisse verhalten dürfen und das Hinzufügen von Einträgen durch den Programmierer zu unübersehbaren Konsequenzen führen kann.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723381 stefan_ram:723381 Zugriffe auf Klassen mit JavaScript im Browser Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723381, slrprddef723381, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/klassenzugriffe_javascript