id-ändern
schaichi
- javascript
Hallo
Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".
z.b.:(Liste ohne Elemente im HTML-Bereich schon erchaffen)
for ( i = 0 ; i <= 50 ; i++ ) {
Listenelement = document.createElement("li");
Text = document.createTextNode("Element" + " " + i);
Listenelement.setAttribute("id", i);
Listenelement.appendChild(Text);
document.getElementsByTagName("ol")[0].appenChild(Listenelement);
}
Mach ich das so, dann haben alle Listenelemente id="50". Wie kann ich das denn anders machen ohne 50 variablen einzusetzen??
MfG schaichi
Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".
Ja. Beachte auch die Konventionen für ID-Attribute.
Mach ich das so, dann haben alle Listenelemente id="50". Wie kann ich das denn anders machen ohne 50 variablen einzusetzen??
Dein Code funktioniert so, wie er dasteht. Irgendwo muss ein anderer Fehler sein.
Siechfred
Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".
Wenn du die Elemente sowieso dynamisch baust wozu brauchst du die ID?
Listenelement = document.createElement("li");
hier hast du den Zugriff auf das Element.
Struppi.
Wenn du die Elemente sowieso dynamisch baust wozu brauchst du die ID?
Ich will auf ein bestimmtes Element im nachhinein noch zugreifen können..
also hab ich es auch schon so versucht:
neuerLink.setAttribute("onclick", "navi(i)" );
wobei navi() eine funktion ist, die bei bstimmten Element ein bestimmtest Bild öffnen soll...
d.h. wenn i = 1 , dann url(bilder/1.jpg);
wenn i = 2 , dann url(bilder/2.jpg); usw.
MfG schaichi
hi,
neuerLink.setAttribute("onclick", "navi(i)" );
neuerLink.onclick = navi;
neuerLink.nummerDieIchBrauche = i;
function navi() {
alert(this.nummerDieIchBrauche);
}
gruß,
wahsaga
hi,
neuerLink.setAttribute("onclick", "navi(i)" );
neuerLink.onclick = navi;
neuerLink.nummerDieIchBrauche = i;function navi() {
alert(this.nummerDieIchBrauche);
}gruß,
wahsaga
Danke klappt super...
MfG Schaichi
Danke klappt super...
Wenn du früher mit deinen Geheimnissen rausrücken würdest, könnte man dir auch leichter helfen (wie ich schon in dem anderen Thread bemäkelt habe)
Struppi.
Hello out there!
z.b.:(Liste ohne Elemente im HTML-Bereich schon erchaffen)
Das ist dummerweise ungültiges HTML.
for ( i = 0 ; i <= 50 ; i++ ) {
Listenelement = document.createElement("li");
Text = document.createTextNode("Element" + " " + i);
Lokale Variablen wären hier angesagt:
for ( var i = 0 ; i <= 50 ; i++ ) {
var Listenelement = document.createElement("li");
var Text = document.createTextNode("Element" + " " + i);
Listenelement.setAttribute("id", i);
Wozu setAttribute()? Und was [Siechfred] sagte.
Listenelement.id = "Listenelement" + i;
document.getElementsByTagName("ol")[0].appenChild(Listenelement);
}
Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:
var Liste = document.getElementsByTagName("ol")[0];
In der Schleife:
Liste.appendChild(Listenelement);
See ya up the road,
Gunnar
Listenelement.setAttribute("id", i);
hat nichts verändert...
Wozu setAttribute()? Und was [Siechfred] sagte.
Listenelement.id = "Listenelement" + i;
habs jetzt so gemacht:
setAttribute("onclick", "navi(i)" );
function navi(variable) {
alert(variable);
}
zeigt immer 50?!
Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:
Macht das denn einen Unterschied??
MFG schaichi
Hello out there!
habs jetzt so gemacht:
setAttribute("onclick", "navi(i)" );function navi(variable) {
alert(variable);
}zeigt immer 50?!
Ja, na sicher. Wann feuert denn 'onclick'? Nicht etwa lange NACH dem Durchlaufen der Schleife?
Und wie groß ist i nach dem Durchlaufen der Schleife?
Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:
Macht das denn einen Unterschied??
Ja, getElementsByTagName ist eine sehr teure Operation (teuer im Sinne von langer Abarbeitungszeit). Besonders teure Operation sollte man nicht unnötig oft ausführen. 51 Mal sind genau 50 Mal zu oft.
See ya up the road,
Gunnar