Problem mit der Gültigkeit von Variabeln
TTux
- javascript
0 Struppi
Hi SelfHTML Community,
schon seit einiger Zeit beschäftige ich mich mit JS. Unter anderem brauche ich auch des öfteren das DOM. Ich bin aber schon einige Male auf das selbe Problem gestossen, hab bis jetzt aber immer einen komplett anderen Weg gesucht, also keine gute Lösung gefunden.
Mein Problem gestaltet sich folgendermassen:
Ich habe ein Objekt, in dem in einer Schlaufe mehrere Knoten erstellt werden. In dieser Schlaufe werden auch einige weitere Informationen zum Knoten z.B aus einem HTTPRequest ausgewertet. Diese brauche ich jedoch erst, wenn man auf den Knoten klickt, also beim eintreffen eines onclick events. Das ganze sieht also so aus (schematisch):
var object = function()
{
this.create = function()
{
for(x=20;x<=20;x++)
{
var el = document.createElement('div');
//Detail berechnen
el.onclick = function(){ /*machedies und das mit den details*/ };
}
}
}
Mein Problem ist, dass diese Details (weiter Variablen) in der onclick-Funktion nicht mehr gültig sind. Da diese Details manchmal auch aus weiteren Funktionen bestehen ist auch folgende Lösung nicht machbar:
var object = function()
{
this.create = function()
{
function aaa(details){/*machedies und das mit den details*/};
for(x=20;x<=20;x++)
{
var el = document.createElement('div');
//Detail berechnen
el.onclick = new Function("aaa("+details+")");
}
}
}
Kennt ihr eine gute Lösung für dieses Problem?
Vielen Dank für eine Antwort,
TTux
var object = function()
{
this.create = function()
{
for(x=20;x<=20;x++)
Die Schleife ist schomn sehr merkwürdig, sie wird nie durchlaufen, ausserrdem benutzt du hier eine globale Zählvariabel, was immer zu vermeiden ist, daneben ist es üblich i (j,k) als Zählvariabel zu verwenden (inkrement)
{
var el = document.createElement('div');
//Detail berechnen
el.onclick = function(){ /*machedies und das mit den details*/ };
}
}
}Mein Problem ist, dass diese Details (weiter Variablen) in der onclick-Funktion nicht mehr gültig sind. Da diese Details manchmal auch aus weiteren Funktionen bestehen ist auch folgende Lösung nicht machbar:
Was ist denn Details?
Es gibt mehrere Wege dieses Problem zu umgehen.
Struppi.