Schleife... alle Objekte mit class="X"
guest00534&45x$5x
- javascript
0 Der Martin0 berdn0 Dieter Raber
Also mein Problem:
Ich möchte mit javascript eine schleife erstellen die alle Objekte die der Klasse X (class="X") nimmt und etwas bestimmtes macht.
Hat jemand ne Idee???
Meine Idee / Ansatz
for (var i=0;getElementsByTagName("div").lenght <= i; i++) {
if (getElementsByTagName("div")[i].class == "X")
getElementsByTagName("div")[i].class == "Y";
}
Aber das geht irgendwie nicht. Ich glaube das .lenght schon nicht bei getElement geht. Hat jemand ne bessere Idee????
Danke schon mal.
Hallo,
for (var i=0;getElementsByTagName("div").lenght <= i; i++) {
if (getElementsByTagName("div")[i].class == "X")
getElementsByTagName("div")[i].class == "Y";
}
die Objekteigenschaft heißt in Javascript className. Das Schlüsselwort class ist reserviert, womöglich für zukünftige OOP-Erweiterungen in JS.
So long,
Martin
Danke Leute!!!
Hallo Egon,
probier mal className statt class ;-)
Bei mir klappte es hervorragend.
Berdn
Hallo guest00534&45x$5x,
for (var i=0;getElementsByTagName("div").lenght <= i; i++) {
lenght heisst eigentlich length und eigentlich soll die Schliefe solange laufen wie i kleiner der Length von getElementsByTagName("div") ist. getElementsByTagName("div") solltest du in eine Variable packen, damit es nicht jedesmal ausgefuehrt wird.
Hier wuerde es also richtig heissen
var alleDivs = getElementsByTagName("div");
for(var i = 0; i < alleDivs.length; i++)
if (getElementsByTagName("div")[i].class == "X")
Das was in CSS class heisst, ist in JS className, es muesste demnach heissen
if(alleDivs[i].className == 'x')
getElementsByTagName("div")[i].class == "Y";
und hier waere richtig
alleDivs[i].className = 'y'
Gruß,
Dieter
Habs eigentlich genauso gemacht hat nur noch angepasst. Geht aber trotzdem nicht. Hier ist mein angepasster Quelltext:
var allImg = document.getElementsByTagName("img");
for (var i=0;allImg.length <= i; i++) {
if (allImg[i].className == "offline") {
allImg[i].style.backgroundImage = "url("+allImg[i].src+")";
allImg[i].src = "../static/offline.png";
}
}
Nochmal Danke Egon.
Habs eigentlich genauso gemacht hat nur noch angepasst. Geht aber trotzdem nicht. Hier ist mein angepasster Quelltext:
Hast du nicht. Und was heißt "geht nicht"?
var allImg = document.getElementsByTagName("img");
wenn es dir nur um die Bilder geht, kannst du auch document.images verwenden.
for (var i=0;allImg.length <= i; i++) {
<= ist nicht richtig, damit läßt du ein Bild aus, da length bei null anfängt zu zählen.
Struppi.
Hallo Struppi,
for (var i=0;allImg.length <= i; i++) {
<= ist nicht richtig, damit läßt du ein Bild aus, da length bei null anfängt zu zählen.
Viel schlimmer noch: Der Vergleich ist verkehrtrum! Üblicherweise formuliert man doch i<Endwert, es ist recht ungewöhnlich, den Endwert im Vergleich vorne dranzustellen. Möglich ist das natürlich auch, aber dann muss man auch den Vergleichsoperator umdrehen:
for (i=0; 10>i; i++)
{ document.write("Durchlauf Nummer "+i);
}
Das ergibt auch zehn Durchläufe, i zählt von 0..9 durch und hat nach Schleifenende den Wert 10.
Schönen Tag noch,
Martin
Jetzt gehtz!
Danke.
Danke an alle! as Forum is echt spitze! Niveauvoll und hilfreich.
Hallo guest00534&45x$5x.
var allImg = document.getElementsByTagName("img");
Mache es dir nicht so kompliziert. Es gibt bereits eine vorgefertigte Kollektion für alle Grafiken in einem Dokument: http://de.selfhtml.org/javascript/objekte/images.htm#allgemeines@title=document.images.
Einen schönen Sonntag noch.
Gruß, Ashura