Schleife mit getElementByTagName
Jean Pascal
- javascript
Hi,
ich möchte gerne erreichen, dass bei einem onmouseover über ein <a>-Tag mehrere <img>s unsichtbar werden. Idee war folgende:
(...)
function switch() {
for (var i = 0; i < document.getElementByTagName('img')[i]; i++) {
document.getElementByTagName('img')[i].className = "notdisplayed";
}
}
(...)
<a href="#" onmouseover="switch()">Auswahl abwählen</a>
<img src="foto.gif">
<img src="foto.gif">
<img src="foto.gif">
(...)
Ganz falsch liege ich nicht, oder? Funktioniert aber leider noch nicht. Weiß jemand Rat?
Danke.
Jean
Hi,
for (var i = 0; i < document.getElementByTagName('img')[i]; i++) {
Da es mehrere Elemente mit demselben name geben kann, heißt die Funktion folgerichtig getElementsByTagName, nicht getElementByTagName.
Ich würde allerdings die Funktion nur einmal aufrufen und das Ergebnis in einer Variablen ablegen, und dann nur noch mit der Variablen arbeiten.
cu,
Andreas
Hallo MudGuard.
for (var i = 0; i < document.getElementByTagName('img')[i]; i++) {
Da es mehrere Elemente mit demselben name geben kann, heißt die Funktion folgerichtig getElementsByTagName, nicht getElementByTagName.
Zudem sollte man hier wohl eher prüfen, ob die http://de.selfhtml.org/javascript/objekte/array.htm#length@title=length der von getElementsByTagName zurückgegebenen Liste größer ist als i.
Ich würde allerdings die Funktion nur einmal aufrufen und das Ergebnis in einer Variablen ablegen, und dann nur noch mit der Variablen arbeiten.
Zusätzlich würde ich eher zu document.http://de.selfhtml.org/javascript/objekte/images.htm@title=images greifen.
Einen schönen Freitag noch.
Gruß, Mathias
Hi Mathias,
danke, length ist natürlich genau das, was da stehen sollte. Jetzt funktioniert es auch.
Grüße
Jean
Hallo nochmal Mathias,
hast du vielleicht eine Idee, wie ich es schaffen kann, nur ganz bestimmte <img>-Tags zu verändern statt alle? Muss ich alle einzeln benennen (mit ID), oder gibt es einen Weg, mehrere bestimmte <img>s als Gruppe zu verändern?
Danke.
Jean
Hallo Jean.
hast du vielleicht eine Idee, wie ich es schaffen kann, nur ganz bestimmte <img>-Tags zu verändern statt alle?
Wenn sie sich in einem gruppierenden Bereich befinden wiederum per getElement*. Denn neben dem document-Objekt verfügt auch jedes HTML-Elementobjekt über diese Methoden. Du kannst also mehrere Aufrufe einfach aneinanderhängen:
document.getElementsByTagName('element').getElementsByTagName('kindelement');
Muss ich alle einzeln benennen (mit ID), oder gibt es einen Weg, mehrere bestimmte <img>s als Gruppe zu verändern?
In diesem Falle kannst du im Übrigen nicht mit document.images arbeiten, da diese HTMLCollection einzig an das document-Objekt gebunden ist.
Einen schönen Freitag noch.
Gruß, Mathias
Hallo nochmal.
hast du vielleicht eine Idee, wie ich es schaffen kann, nur ganz bestimmte <img>-Tags zu verändern statt alle?
Wenn sie sich in einem gruppierenden Bereich befinden wiederum per getElement*.
Wobei sich hier ggf. sogar getElementsByName anbietet, nachdem du die Grafiken mit einem gemeinsamen Namen benannt hast.
Einen schönen Freitag noch.
Gruß, Mathias
Ja super,
mit getElementsByName() funktioniert es.
Danke nochmal :-).
Jean
Hi Mathias,
leider sind die Elemente nicht gruppiert. Verwunderlich, dass es nicht standardmäßig ein getElementByClassName() gibt. Aber ich werde sicher noch irgendeinen Weg finden. Trotzdem vielen Dank. Dir auch noch ein schöner Freitag.
Gruß Jean
Hi Andreas,
OK, das mit Singular und Plural ist in diesem Fall etwas verwirrend, danke für den Hinweis.
Danke.
Jean