Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   JS: string -> variable (https://boardunity.de/js-string-variable-t4580.html)

MrNase 18.12.2006 15:29

JS: string -> variable
 
Morgen!

Ich bin hier am verzweifeln... :(


Folgender Code:
Code:

fenster = new Array("offen", "geschlossen");
var blubb = $('li#'+whatopen).get(0).parentNode.id; // ergibt 'fenster'
var texton = blubb+[0]; // ergibt fenster0 statt offen

Ich habe also ein Array mit Daten (offen oder geschlossen)
blubb ist ein String mit dem Inhalt 'fenster'
und texton soll einfach nur 'offen' ausgeben, also das erste Element des Array mit dem Namen 'fenster'.

Mein Problem liegt in der letzten der 3 Zeilen. Statt 'offen' enhält diese Variable nur 'fenster0' wobei ich denke, dass er blubb nicht richtig erkennt.

Was muss ich nun ändern damit er mir, so wie er es soll, das erste Element des Arrays mit dem Namen 'fenster' auf die Variable 'texton' legt?


Grüsse und Danke! :)


Achso nicht wundern... die zweite Zeile ist jQuery mit nem Bugfix um die ID des Parents des Elements mit der ID 'whatopen' zu erhalten. ;)

Patrick Gotthardt 18.12.2006 15:51

Jupp, ist doch klar.

Muss das Array unbedingt in einer Variable "fenster" gespeichert sein? Sowas hier:
Code:

var state = {"fenster":["offen", "geschlossen"]};
Wäre viel leichter zu verarbeiten:
Code:

var texton = state[blubb][0];
Ansonsten wird's nur über eval gehen - und eval ist evil. ;)

Björn 18.12.2006 16:15

evtl eval()`??

eval("foobar = " + blubb + "[0];");
obs geht.. ka

MrNase 18.12.2006 17:24

Zitat:

Zitat von Patrick Gotthardt (Beitrag 38252)
Jupp, ist doch klar.

Muss das Array unbedingt in einer Variable "fenster" gespeichert sein? Sowas hier:
Code:

var state = {"fenster":["offen", "geschlossen"]};
Wäre viel leichter zu verarbeiten:
Code:

var texton = state[blubb][0];
Ansonsten wird's nur über eval gehen - und eval ist evil. ;)

Perfekt, danke! :)

Ich habe nun folgendes:
Code:

    var state = {
                "fenster":["offen", "geschlossen"],
                "tueren":["offen", "geschlossen"],
                "garagentore":["offen", "geschlossen"],
                "lichter":["an", "aus"]
                    };

Wie kann ich nun eine Schleife konstruieren damit ich auf 'fenster', 'tueren', 'garagentore' und 'lichter' eine Funktion anwenden kann?

Patrick Gotthardt 20.12.2006 00:41

Jaha... und da hab ich wieder die Frage, auf die ich wohl nie die Antwort kennen werde... ;)

Code:

for(var key in state) {
    // mach was mit "key", wobei "key" = "fenster"|"tueren"|"garagentore"|"lichter"
    // ans array kommst du mit state[key]
}

So oder so ähnlich müsste das eigentlich theoretisch gehen... ;)

MrNase 20.12.2006 18:24

So und genau so geht es sogar. ;)


Danke! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25