dynamische Variablenauswahl

Hallo liebes Forum, ich bin es mal wieder.

Heute mit einem neuen, ziemlich abenteuerlichen Denkansatz.

Ersteinmal die geforderte Aufgabe:
Ich habe einen Fragebogen, mit vielen Unterfragen. Generell immer wieder das gleiche Schema, ein Faktum, welches der Nutzer mit einer Zahl von 1-6 bewerten soll, welche Kästchenweise dargestellt werden und angeklickt werden können.

Problem:
Wenn ich das alles einzeln programmiere, habe ich einen Haufen redundanten Code, da je immer die selbe Abfrage kommt, lediglich mit anderen Variablen.

Überlegung:
Wenn ich die Frage einlade, könnte ich eine Variable (nennen wir sie einfach mal "var_frage") mit einem entsprechenden kürzel versehen, welche die Frage bezeichnet. Wenn ich jetzt dieses Kürzel irgendwie nutzen könnte, um wiederum intern auf eine Variable zuzugreifen, die so heißt, wäre mein Problem ganz elegant gelöst.

Mal ein simples Beispiel: Frage a wird geladen. Die Variable var_frage nimmt den Wert "var_frage_a" an. Nun soll die Bewertung in die Variable "var_frage_a_erg" geschrieben werden.

Ich müsste also "nur" den Inhalt der var_frage nehmen und dann "_erg" anhängen (gehen wir mal aus, dass die Variablen anderer Fragen nach dem selben Schema angelegt sind, also var_frage_b_erg, var_frage_c_erg,...).

WIE bekomme ich das hin, kann mir Jemand mal einen Stoß in die richtige Richtung geben?

Grüße, Kire
 
Das sollte mit einer kleinen Funktion abgehakt sein:
Code:
function question(frage,value){
var question = '<label for="'+value+'">'+frage+'</label><select name="'+value+'"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><br>';
document.getElementById("questions").innerHTML += question;
}

Aufrufen musst du dann nur noch pro Feld diese Funktion mit den jeweiligen Daten:
Code:
function init(){
question("Wie gefällt dir dies?","dies");
question("Wie gefällt dir das?","das");
...
}

...

<body onload="init();">
...

Gruß
 
Zuletzt bearbeitet:
Danke aber dein Ansatz hilft mir leider gar nicht. So wie ich das interpretiere, bastelst Du so einen Fragebogen, aber der ist ja nicht wirklich das Problem. Das Problem ist die Verarbeitung der Ergebnisse in Variablen.

Ich MUSS an diese Variablen später noch herankommen. Das ganze Ding ist weitaus mehr als ein Fragebogen, ich möchte nur nicht allzuviel Verwirrung stiften ;) Aber um mal einen groben Überblick zu geben: Dies ist Teil einer JS-Anwendung mit massig Unterseiten. Diese Ergebnisse werden optisch aufbereitet und an anderer Stelle wiedergegeben, ebenso müssen sie, wenn der User in seiner Sitzung nocheinmal diese Seite aufruft noch eingetragen sein und vieles mehr.

Deswegen -> Ergebnisse in einzelne Variablen eintragen. Ich hab nur keine Lust, für jede Frage ein Skript zu schreiben und tausende Aufrufe dann unterbringen zu müssen. Daher meine Überlegung: Über eine Variable derzeitige Frage angeben, und anhand DIESER Variable dann die eigentliche Zielvariable festlegen.
 
Nun gut, da hab ich wohl was falsch verstanden ;)

Das Problem bei der Sache ist natürlich, dass bei Refresh Javascript wieder neu, und somit auch alle Variablen neu geladen werden.

Die einzige Möglichkeit, die ich hier sehe - zumindest wenn du clientseitig bleiben möchtest - sind Cookies, wobei ich hier auch nicht sonderlich viel Erfahrung habe.

Andere Möglichkeit:
Per Ajax mit einem kleinen PHP-Script kommunizieren, welches deine Variablen in eine Session speichert bzw. ausliest.


Und für den Fall, das sich wieder irgendwas übersehen/falsch verstanden habe:
Schon daran gedacht die einzelnen Datensätze in ein Array zu speichern?


Gruß
 
Zuletzt bearbeitet:
Hey ho,

also die Inhalte werden andauernd per Ajax in diverse Divs geladen, da ist kein regulärer Refresh nötig.

Ich bin auch schon ein Stückchen weiter gekommen. Ich bin auf folgende, ziemlich geniale Möglichkeit gestoßen:

Code:
$('#box'+i).css("background-color","black");};
In diesem Beispiel habe ich mehrere Divs, welche box1 - box4 benannt sind. Mit diesem Befehl wird ein Div umgefärbt, in Abhängigkeit von der Variable i. Ist i = 1, wird box1 umgefärbt bei 2 box2 und so weiter.

Jetzt einmal meine Frage, geht das auch bei einer if-Abfrage einer Variable? Also irgendwas in diese Richtung (Achtung, definitiv nicht funktionierender PseudoCode XD):
Code:
if (box+i=="1") {tu was();};

Also nochmal, ich möchte, wenn die if-Abfrage ausgeführt wird, die eigentliche Variable, welche abgefragt werden soll, dynamisch halten, je nach Wert den "i" hat. Hat da Jemand eine Idee?

@fpvz: Ja, an Arrays und Cookies habe ich auch schon gedacht, allerdings Aufgrund diverser Vorgaben wieder verworfen.
 
Habe grade was aus PHP gefunden:
Code:
$name = "meineVariable";
${$name} = "hallo welt!";
echo $meineVariable; //Ausgabe: "hallo welt!"

SO und das bräuchte ich nun in JS... Jemand eine Idee?
 
Hey das ist gut, das werd ich mir merken.

Ich hab aber, grade eben Arrays entdeckt - damit geht das auch und ist in meinem Fall auch sparsamer.

Code:
var box = ['1','0','0','0','1','...};

for (var i=1; i <= 13; i++) {if (box[i] == '1') {tu was();}; );

Klappt wunderbar^^.
 

Neue Beiträge

Zurück