Variabel, Schleife, Gültigkeit

SoC

Grünschnabel
Hi!

Ich bin neu hier und habe direkt eine Frage zu einem Problem, an dem ich grade verzweifel, da ich wohl mal wieder nen ganz schön großes Brett vorm Kopf hab.

Die Situation ist folgende:

Der Inhalt einer Seite wird dynamisch erstellt, verschiedene Bilder in Divs, ein wenig Text und onClick-events, welche zu einer weiteren Seite führen. Genau das letzte bereitet mir nun Sorgen.

Die Events brauchen einen Link, welchen ich mir zusammenbaue. Dabei kommt eine Seriennummer aus einem DOM-Array. Der Code sieht grob so aus:

Code:
for(var i=0; i<globalpagesize; i++) {
var Seriennummer = response.getElementsByTagName('seriennummer')[i].firstChild.data;

var url = 'index.php' + Seriennummer;

document.getElementById("newDiv"+i).onclick = function (e) {location.href=url;};
}

(verkürzte Version)

Die Seriennummer wird bei jedem Schleifendurchlauf korrekt ausgelesen und die url richtig erstellt. Jedoch in der angezeigten Seite kommt nun der Fehler. Bei jedem Bild ist im onClick-Event immer nur die url eingetragen, welche als letztes in der Schleife erstellt wurde. Scheint auch logisch, da der letzte Wert der Variabel url genommen wird. Doch das soll natürlich nicht so sein! Interessanter Weise taucht der Fehler auch nur im IE auf, z.B. unter Safari läuft das richtig.

Ich hoffe, dass das verständlich war und mir einer weiterhelfen kann. Ich sitz da nun schon gut 2 Stunden dran und mein Kopf raucht ;)
 
Dank dir, aber leider hat das nicht weitergeholfen.

new function bewirkt, dass die Funktion interessanter Weise sofort bei erscheinen der SEite (also ohne dem Klick) ausgeführt wird. Doch davon abgesehen springt sie immer noch zu der url, welche als letztes gebildet wurde.

Was ich vielleicht brauche ist die Möglichkeit, bei jedem Schleifendurchlauf nur die zu der Zeit aktuelle Variabel url der Funktion zuzuweisen. Doch wie mach ich das?

WIe es für mich aussieht, setzt der in den onClick-Event nicht jedesmal den Inhalt der Variabel url, sondern nur die Variabel.
 
Mmmh...das kann ich nicht nachvollziehen :confused:

Hier mal ein kleiner Schnipsel:
Code:
<a>klick</a><br>
<a>klick</a><br>
<a>klick</a><br>
<a>klick</a><br>

<script type="text/javascript">
for(i=0;i<document.getElementsByTagName('a').length;++i)
	{
		document.getElementsByTagName('a')[i].onclick=new Function('alert('+i+')')
	}
</script>

...vom Sinn her soll er das selbe machen, wie deiner, und er tut es auch....
 
ahh... ich sag ja, ich hab heute nen Brett vorm Kopf.

Meiner Fehler war es einfach, dass ich geschweifte Klammern anstatt von runden hatte.
Manchmal sieht man den Wald vor lauter Bäumen nicht mehr.

Auf jeden Fall nen riesen Dank an dich!
 

Neue Beiträge

Zurück