JavaScript For in

Eine Variante des For-Statements unter JavaScript ist das For-in-Statement. Die For-in-Schleife arbeitet aber, im Gegensatz zur For-Schleife, auf der Basis von Objekteigenschaften eines JavaScript-Objekts. Dies bedeutet, dass hier keine Zahlenwerte (Integer- oder Float-Variablen) als Zähler für die einzelnen Durchgänge verwendet werden. Vielmehr werden bei der For-in-Schleife die Namen der Eigenschaften verwendet und über die Schleife durchgegangen.

Es werden also alle Eigenschaften, die über ihren Namen addressiert werden, ermittelt und bei jedem Durchgang der Schleife wird eine dieser Eigenschaften der Zählervariablen zugewiesen. Die Anzahl der Schleifendurchgänge (Iterationen) ist damit durch die Anzahl der im Objekt gespeicherten Eigenschaften festgelegt. Der Startwert ist gewissermaßen das erste gefundene Attribut und die Abruchbedingung das Fehlen weiterer Attribute. Ansonsten unterscheidet sich die For-in-Anweisung nicht von der einfachen For-Variante.

Anders als in anderen Programmiersprachen gibt es in JavaScript bis Version 1.6 kein For-each-Statement. Allerdings stellt das For-in-Statement im Prinzip die selben Möglichkeiten, wie eine in anderen Programmiersprachen (wie beispielsweise PHP) vorhandene For-each-Schleife. Ab der JavaScript-Version 1.7 gehört aber auch ein For-each-Statement zum Sprachumfang von JavaScript.

JavaScript For in Beispiel: For-in-Schleife

Bei den unteren Beispielen wird das For-in-Statement verwendet, um die Eigenschaften der betreffenden Objekte zu adressieren. Auch Arrays sind Objekte und deren Eigenschaften sind die einzelnen Indexe, unter denen die im Array gespeicherten Werte abgelegt sind. Der Index wird (entgegen dem Normalfall, bei dem die Indexe als Integerwerte angegeben werden), von der For-in-Schleife als Zeichenkette ermittelt. Mit Hilfe des For-in-Statements ist es möglich, alle Eigenschaften eines beliebigen Objekts zu ermitteln. Zu beachten ist, dass auch eine Funktion im Objekt unter ihrem Namen als Eigenschaft gespeichert ist. In den Beispielen wird auch wieder auf write (die Methode zur Ausgabe von Zeichenketten aus dem JavaScript-Objekt Document) zurückgegriffen.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
document.write ('Attribute und Methoden des Navigator-Objekts:<br>');
// Alle Eigenschaften (Attribute) des Objektes navigator ausgeben.
// (Entspricht in etwa einem "Für alle Eigenschaften von navigator"
// und damit einem for each).
for (var attribut in navigator)
  // Ausgabe des Attributnamen, gefolgt vom im Attribut gespeicherten Wert.
  document.write (attribut + ': ' + navigator[attribut] + '<br>');

document.write ('<br>Attribute und gespeicherte Werte eines Arrays:<br>');
// Array mit Strings erzeugen, welches mit der Bezeichnung einiger Farben gefüllt wird.
var farben = new Array ('rot', 'gelb', 'blau', 'gruen');
// Elemente der Array-Instanz farben werden hier über deren Index ermittelt.
// Die Eigenschaft, die für jeden Durchgang der Schleife in der Zählervariablen
// farbe gespeichert wird, ist in diesem Fall der als String codierte Index des
// jeweiligen Elements.
for (var farbe in farben)
  // Ausgabe des Eigenschaftsnamens - in Klammern dahinter der Datentyp - und
  // der Wert der Eigenschaft.
  document.write (farbe + '(' + typeof farbe + '): ' + farben[farbe] + '<br>');

// Objekt mit dem Namen Person definieren
// Zur Initialisierung des Objekts werden ein Name und das Alter
// angegeben.
function Person (name, alter) {
  // Übergebener Name in der öffentlichen Eigenschaft name speichern...
  this.name = name;
  // und auch das übergebene Alter
  this.alter = alter;
  // Definition einer Objektmethode mit dem Namen print, welche keine
  // Parameter erwartet und deren Aufgabe es ist die im Objekt gespeicherten
  // Daten auszugeben.
  this.print = function () { document.write ('Name: ' + this.name + ', Alter: ' + this.alter + '<br>'); };
}
// Instanz des Objekts Person erzeugen und in der Variablen p speichern.
var p = new Person ('Wilhelm', 54);
document.write ('<br>Attribute einer Instanz vom Typ Person:<br>');
// Attibute der Instanz p ausgeben
// Auch in einem Objekt definierte Methoden sind unter ihrem Namen,
// der zugleich auch der Name der entsprechenden Eigenschaft ist,
// als Eigenschaft gespeichert und werden demnach auch ausgegeben.
for (attribut in p)
  document.write (attribut + ': ' + p[attribut] + '<br>');
// Methode zur Ausgabe der Daten aufrufen.
p.print ();
// -->
</script>

Letzte Posts aus unserem Forum

Script Schrift vergrößern

Hallo wollte gerade das Script für die Schriftvergrößerung testen, aber irgendwie bekomme ich das nicht hin. Habe eine Joomla Website und dort die ... » mehr

von Gast am Donnerstag, 22. April 2010 13:32 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 22. April 2010 18:05 von alm

Hallo, damit kann man nicht allzu viel anfangen. Soviel ich weiss kann es zuweilen Probleme mit Tabellen-Layouts geben. Dort werden die ... » mehr

Javascript Schriftengröße: Problem bei URL-Übergabe im IE8

Hallo, ich hab eben das Javascript zur Schriftengröße eingebaut, klappt auch wunderbar auf Firefox, aber der IE 8 hat folgendes Problem: - wenn ich ... » mehr

von horst1234 am Dienstag, 23. Februar 2010 13:06 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Dienstag, 23. Februar 2010 14:07 von horst1234

Ich hab das charset im Header geändert (wie in der beispiel.html), und schon klappt es ... » mehr

Dynamisches einfügen von Zeilen in eine Spalte

Hallo, ich möchte gerne eine Zeile zwischen zwei andere Zeilen einfügen. Leider klappt folgender Versuch noch nicht so richtig. Vielleicht kann mir ... » mehr

von Bluecaspar am Mittwoch, 10. Februar 2010 18:09 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Donnerstag, 11. Februar 2010 10:37 von Bluecaspar

Ja genau, das war der Fehler. Vielen Dank Alex. Hier der korrigierte Code: <html> <head> <title> Test ... » mehr

Fenster in Frame erzeugen

Hallo, ich würde gerne ein Fenster in einer Webseite erzeugen. Das Fenster sollte dabei auf ein Frame begrenzt sein, sich also nicht aus diesen ... » mehr

von Bluecaspar am Dienstag, 9. Februar 2010 13:57 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Mittwoch, 10. Februar 2010 09:32 von Bluecaspar

Ja hervorragend, dass ist genau das was ich möchte. Danke ... » mehr

Problem: Kombination mit Lightbox 2

Hallo, ich bin gerade dabei die Galerie mit der Lightbox 2 zu verknüpfen, da ich die Bilder im Vollformat gerne in diesem schicken aufpoppenden ... » mehr

von GoPeter am Montag, 16. November 2009 23:38 in JavaScript - bisher 16 Antworten
Letzter Beitrag: Mittwoch, 18. November 2009 00:32 von GoPeter

Soo...hat lange gedauert...aber jetzt ist es endlich ... » mehr



¬ Insolvenzrecht