CaptainCarter: Dynamische Objektnamen ohne eval ?

Beitrag lesen

ich generiere den Zugriff auf die CSS-Eigenschaften eines DIV-Containers über mehrere Arrays. Falls möglich würde ich das gerne ohne eval erreichen, aber selbst mit erhalte ich grundsätzlich die Fehlermeldung "missing ; before statement" unabhängig ich welchem Script-Kontext die Anweisung steht. Ein Beispiel für die Generierung:

info[0][0] = "nameDiv";
info[0][1] = "style.top";

var1 = "document.getElementById("" + info[0][0] + "")." + info[0][1] + " = 30px";
eval(var1);

eval ist evil.
Es gibt nur wenige sinnvolle Verwendungsmöglichkeiten für eval und deiner ist 100% keiner.

Außerdem solltest du bei Problemen das was du versuchst auch überprüfen  dann findest du vielleicht sogar selber den Fehler.

info[0][0] = "nameDiv";

var obj  = document.getElementById(info[0][0])
if(obj)
{
    obj.style.top = "30px";
}
else
{
    alert('Das Element mit dem Namen: ' + info[0][0] + ' existiert nicht.');
}

Hallo,

danke, aber deine Vorgehensweise funktioniert leider nicht bei meinem Problem. Mit einer einzigen Variable, habe ich es auch ohne eval hinbekommen. Das Problem liegt ja darin, das "style.top" auch aus einer Variable kommen soll, damit so auch andere CSS-Eigenschaften angesprochen werden können. Und

info[0][0] = "nameDiv";
info[0][1] = "style.top";

var obj  = document.getElementById(info[0][0]).info[0][1];
obj = "30px";

funktioniert genausowenig wie

var obj  = document.getElementById(info[0][0]);
obj.info[0][1] = "30px";

Vielleicht mache ich ja bei der Notation etwas falsch.

Gruss
CC