Moin Nachteule ;-)
Problem ist, das dies hier nicht funktioniert:
eval(menue_global + "_mp_pos[i]"); ich bekomme also z.B. home_mp_pos[i] nicht zusammengesetzt. Einfach
addieren kann ich es ja auch nicht, also menue_global + "_mp_pos[i]".
also, wenn menue_global eine String-Variable ist, sollte obiger Ausdruck eigentlich
etwas Vernünftiges zurückliefern, imho den *Inhalt* von z.B. home_mp_pos[i].
Ich muß ja eval() verwenden, da
ich keine String, sindern ein Objekt zusammen addiere, oder?
Nicht ganz, eval() wird immer dann verwendet, wenn man Javascript-Ausdrücke
ausführen lassen möchte, die nicht im Quelltext stehen sondern erst während
der Ausführung aus String-Variablen zusammengesetzt werden. Selbstmodifizierender
Code sozusagen, imho eine der großen Stärken von Scriptsprachen
gegenüber Compiler-Sprachen (jaja... mit Ausnahme des Falles, daß man
einen Script-Interpreter in einer Compilersprache schreibt ;-)).
Wenn es sein muß, lege ich sechs Schleifen an, was aber uncool ist ;-).
Falls Du Dir dann doch sechs Schleifen anlegen solltest, mach davon
mal'n Foto und stell es ins Netz... ;-)
for(var i = 0; i < eval(menue_global + "_mp[i].length"); i++)
{
eval(menue_global + "_mp_pos[i]") = document.layers[eval(menue_global + "_mp[i]")].pageY;
}So sollte es dann zum Schluß aussehen. Als Beispiel habe ich jetzt nur mal den NN-Teil aufgeführt.
for(var i = 0; i < alle.length; i++)
{
for(var j = 0; j < eval(alle[i] + "_mp.length"); j++)
{
eval(alle[i] + "_mp_pos[j]") = document.layers[eval(alle[i] + "_mp[i]")].pageY;
}
}
Ich bin mir zunächst nicht ganz sicher, wo das Problem liegt, weil ich die
Definitionen von menue_global[] bzw. alle[] nicht in Deinem Posting finde.
Zunächst ist eval() in Ausdrücken wie
feld[eval(stringvariable+"_anhaengsel")]
überflüssig. Im Array-Index darf ja sowieso ein String stehen und ein
zusammengesetzter String ist letztendlich auch ein String.
Beim folgenden Ausdruck
eval(alle[i]+"_mp_pos[j]") = ...;
würde ich tippen, daß eval erst den Inhalt der Variable ersetzt und dann die Zuweisung
ausgeführt wird. Wenn also alle[i] = "home" und home_mp_pos[j] = 4711, dann steht
dort letztendlich sowas wie
4711 = document.layers[...];
also sicherlich nicht das, was Du willst.
Mein Vorschlag: Bastel Dir einfach zuerst die gesamte Befehlszeile als String zurecht
und laß dann genau ein eval darauf los, also etwa so:
eval(alle[i]+"_mp_pos[j] = document.layers["+alle[i]+"_mp[i]].pageY);
Viel Glück erstmal beim Probieren und bis dannundwann...
Andreas