hi,
zuerst noch ergänzend: sectionId hängt mit den divs nur über id postfixes zusammen (im DOM gibt es keine vorher definierte Relation)
Bsp: <div id="foldAnchorFold1"> soll das Auf- und Zuklappen von <div id="foldSectionBlockFold1"> irgendwo in der Seite steuern
Gut, also wie Struppi auch vermutet hat: Du hast zur Laufzeit, wenn du den Event dynamisch an das Element binden willst, einen immer individuellen Wert vorliegen, den du in der Behandlung des Events nutzen willst.
Zu deiner Antwort: heißt das, ich kann nach Belieben Elemente in den DOM hängen (die der Browser gar nicht zuordnen kann)?
Das machst du damit ja gar nicht.
divsAnchors[i] exisitiert ja bereits, es ist ein Javascript-Objekt.
Und diesem fügst du lediglich eine weitere Eigenschaft hinzu, eben .sectionId
Diese Eigenschaft ist nichts großartig anderes als eine Variable.
Wenn du global eine Variable xyz hast, wäre diese an das window-Element gebunden - und du könntest auf sie auch über window.xyz oder window[xyz] zugreifen.
Hier machst du nichts anderes - nur nicht mit window, sondern du bindest die Eigenschaft direkt an das Element, welches sie anschließend benötigt.
dann würds so aussehen, oder?
Nein, nicht ganz, sondern so, wie ich schrieb:
divsAnchors[i].sectionId = sectionId;
divsAnchors[i].onclick = changeVisibility;
changeVisibility nochmals in eine anonyme Funktion zu kapseln, kannst du dir hier sparen. Da du keinen Parameter mehr übergeben musst, kannst du der onclick-Eigenschaft des Elements gleich die Funktionsreferen changeVisibility zugreifen.
Und _innerhalb_ der Funktion changeVisibility kannst du dann über this auf das Element, und über this.sectionId auf die vorher an dieses gebundene Eigenschaft zugreifen.
function changeVisibility() {
alert(this.sectionId);
}
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }