molily: getElementById

Beitrag lesen

function closeDetails() {
for (i = 0; i < 50; i++) {
  var id = 'id_' + i;  // id = 'id_2';
  var e = document.getElementById(id);
  if (e.style.display == "block")

Lass dir den Wert der display-Eigenschaft mal ausgeben (mit alert(), console.log() oder ähnlich). Da wirst du vermutlich sehen, dass es ein leerer String ist. style ist nicht zum Auslesen der gegenwärtigen Eigenschaftswerte geeignet, es sei denn man hat sie vorher auf diese Weise oder mit Inline-Styles (style="display:block") gesetzt.

Wenn diese Funktion ohnehin nur verstecken soll, dann kannst du dir die Abfrage, ob das Element sichtbar ist, auch sparen und direkt verstecken. Wichtiger wäre die Abfrage, ob e ein Element enthält, also if (e) {}.

Lediglich eine Toggle-Funktion, die einblenden und ausblenden kann, müsste eine Abfrage des aktuellen display-Wertes durchführen. Angenommen, das Element ist standardmäßig sichtbar und wird nur direkt per JavaScript (über .style.display = "none") unsichtbar gemacht, dann fragst du besser das Gegenteil ab:

var style = e.style;
style.display = style.display != "none" ? "none" : "block";

das 'getElementById' geht mit der zusammengebauten id nicht.

alert(id);
Liefert das die richtigen IDs?

  • gibt es eine gute Möglichkeit alle vorhandenen ID's herauszufinden und zu durchlaufen?

Dafür gibt es Klassen. Neuere Browser kennen document.getElementsByClassName(), für alle weiteren gibt es ausgereifte Selektor-Engines. Die sind in den üblichen JavaScript-Frameworks eingebaut, aber auch separat erhältlich und verwendbar. Z.B. Sizzle, Sly oder Peppy.