Javascript: Nachfolgerelement ansprechen
bastold
- javascript
Hi!
Gibt es eine Möglichkeit, das Nachfolgerobjekt im DOM anzusprechen?
Bsp
...
<div ID="div1"></div>
<img ID="image1" src="...">
Ich möchte nun, ausgehend vom 'div1'-Element an eine JS-Funktion die ID des Nachfolgerelements übergeben, ohne dass ich wissen muss, wie dieses heisst.
Hintergrund ist, ich möchte im 'div1' eine Schaltfläche anbieten, die beim Klick auf diese, das Nachfolgerelement sichtbar macht (document.getElementById([nachfolgerID]).style.display='block').
Da ich diese Funktion in meiner Seite oft brauche, möchte ich das Umschalten in eine function auslagern und die ID des Nachfolgerelements variabel übergeben, in meiner Idealvorstellung mit this.follower
.
Geht das?
http://de.selfhtml.org/javascript/objekte/node.htm
nextSibling?
Im gegebenen Beispiel sollte nextSibling aber ein Text-Knoten sein (der Umbruch).
Hmmm, erst mal danke. Ja, das ist wohl das, was ich brauche.
Komme jetzt im Speziellen aber nicth zum Ziel
this.parentNode.nextSibling.id
liefert mit ein "undefined" zurück.
Das "parentNode", weil im "div1" noch ein Bild liegt, welches ich anklicke.
this.parentNode.id
liefert mit die korrekte ID zurück, naemlich "div1".
Bin ich denkmässig irgendwo auf dem Holzweg?
Danke
Yerf!
Bin ich denkmässig irgendwo auf dem Holzweg?
Du hast nur suits Hinweis übersehen, das der nächste Sibling der Textknoten mit dem Umbruch ist. Benutze am besten eine Schleife und nimm solange den nächsten Sibling bis du einen Element-Knoten hast.
Gruß,
Harlequin
Textknoten mit dem Umbruch ist. Benutze am besten eine Schleife und nimm solange den nächsten Sibling bis du einen Element-Knoten hast.
Alles klar, probier ich :)
Danke
[latex]Mae govannen![/latex]
Du hast nur suits Hinweis übersehen, das der nächste Sibling der Textknoten mit dem Umbruch ist. Benutze am besten eine Schleife und nimm solange den nächsten Sibling bis du einen Element-Knoten hast.
Ergänzend: In der Schleife den jeweiligen Typ mit nodeType abfragen.
Stur lächeln und winken, Männer!
Kai
Ergänzend: In der Schleife den jeweiligen Typ mit nodeType abfragen.
Die Abfrage selbst aber nicht mit einer If-Schleife :p
Hallo,
Gibt es eine Möglichkeit, das Nachfolgerobjekt im DOM anzusprechen?
Am einfachsten geht es über die neuere Eigenschaft nextElementSibling. Wenn der Browser diese noch nicht kennt, muss man mit nextSibling vorankriechen.
function getNextElementSibling (el) {
if (el.nextElementSibling) {
return el.nextElementSibling;
} else {
var sibling = el;
while (sibling = sibling.nextSibling) {
if (sibling.nodeType == 1) {
return sibling;
}
}
}
return null;
}
(ungetestet)
Siehe
http://www.w3.org/TR/ElementTraversal/#attribute-nextElementSibling
http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-element-nextelementsibling
Mathias
vielen dank an alle, problem ist mit eurer hilfe zur zufriedenstellung gelöst. *freu*