getElementById(' '): Mehrere Angaben möglich?

parawaiter

Mitglied
Hallo,

weiß jemand, ob es möglich ist, bei getElementById(' ') mehrere IDs anzusteuern?

Also statt getElementById('id1') z.B. getElementById('id1, id2') ! :confused:

danke im Vorraus
 
Hi,

was willst Du machen: mehrere Objekte mit unterschiedlichen IDs ansprechen? Dann würde ich eine Schleife empfehlen:
Javascript:
var ids = new Array("e1", "e2", "e3");

for (var i in ids) {
  document.getElementById(ids[i]).style.display = "none";
}

Ansonsten wäre vielleicht getElementsByName oder getElementsByTagName etwas für Dich.

Gruß
.
 
var ids = new Array("e1", "e2", "e3");
Code:
for (var i in ids) {
    document.getElementById(ids[i]).style.display = "none";
Da Gruselt es mich aber fast schon. Das Schüsselwort "in" (Kapitel for-Schleife unten zweites Beispiel) ist in Javascript eignetlich dazu gedacht alle Member eines Objektes durchzugehen. D.h. ein Code wie dieser kann Probleme bereiten weil z.B. ein Array auch den Member length hat und dann bei einem Schleifendurchlauf der Wert von array.length zurückgegeben wird.
Man sollte vielleicht auch sicher stellen, dass ein Element mit der Id auch existiert. Besser wäre also
Javascript:
var ids = ["e1","a1","a2b","f2"];

for (i=0; obj=document.getElementById(ids[i]); i++)
    obj.style.display="none"
 
Zuletzt bearbeitet:
@con-f-use:

Wenn dem so ist - nicht für ungut. :-(

Gewohnt bin ich es aus ActionScript, wo ich per for..in bei einem Array tatsächlich nur die Elemente anspreche. Bisher bin ich davon ausgegangen, JavaScript verhielte sich genau so - und zumindest unter Firefox herhalte ich hierfür:
Javascript:
var a = new Array(1, 2, 3);

str = "";

for (var i in a) {
	str += (i + ":" + a[i] + ", ");
}

alert(str);
die Ausgabe "0:1, 1:2, 2:3".

Gruß
.
 
Naja... die Umsetzung der JS-Spezifikationen ist bekanntermassen etwas "variabel".

Prinzipiell hat con-f-use schon recht, auch wenn es in diesem Fall auf Tobias' Art auch hinhaut.
Die vordefinierten Objekteigenschaften(length,construcor,prototype) werden offensichtlich in der Schleife ignoriert. Man sollte sich aber nicht unbedingt darauf verlassen....wer testet schon alle Browser. Abgesehen davon werden heutzutage gern umfangreiche Skriptbibliotheken verwendet, welche bestehende Objekte erweitern, und wenn dies der Fall ist, sieht die Sache schon ganz anders aus :eek:
Code:
Array.prototype.bla=function(){return 'blubb'}
a=new Array('was','geht','ab');

for(var k in a)
  {
    document.write(k+':'+a[k]+'<br>');
  }
//Ausgabe:
//bla:function(){return 'blubb'}
//0:was
//1:geht
//2:ab
 

Neue Beiträge

Zurück