tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von fpvz
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
186
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KireSchattenhaar KireSchattenhaar ist offline Mitglied
    Registriert seit
    Sep 2011
    Beiträge
    20
    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
     

  2. #2
    fpvz fpvz ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    74
    Das sollte mit einer kleinen Funktion abgehakt sein:
    Code :
    1
    2
    3
    4
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    function init(){
    question("Wie gefällt dir dies?","dies");
    question("Wie gefällt dir das?","das");
    ...
    }
     
    ...
     
    <body onload="init();">
    ...

    Gruß
    Geändert von fpvz (21.10.11 um 13:14 Uhr)
     

  3. #3
    KireSchattenhaar KireSchattenhaar ist offline Mitglied
    Registriert seit
    Sep 2011
    Beiträge
    20
    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.
     

  4. #4
    fpvz fpvz ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    74
    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ß
    Geändert von fpvz (21.10.11 um 15:07 Uhr)
     

  5. #5
    KireSchattenhaar KireSchattenhaar ist offline Mitglied
    Registriert seit
    Sep 2011
    Beiträge
    20
    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 :
    1
    
    $('#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 :
    1
    
    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.
     

  6. #6
    KireSchattenhaar KireSchattenhaar ist offline Mitglied
    Registriert seit
    Sep 2011
    Beiträge
    20
    Habe grade was aus PHP gefunden:
    Code :
    1
    2
    3
    
    $name = "meineVariable";
    ${$name} = "hallo welt!";
    echo $meineVariable; //Ausgabe: "hallo welt!"

    SO und das bräuchte ich nun in JS... Jemand eine Idee?
     

  7. #7
    fpvz fpvz ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    74
    In etwa so?
    Code javascript:
    1
    2
    3
    
    var name = "meineVariable";
    eval("var " + name + "='hallo welt!';");
    document.write(meineVariable);

    hier nachzulesen

    Gruß
    KireSchattenhaar bedankt sich. 

  8. #8
    KireSchattenhaar KireSchattenhaar ist offline Mitglied
    Registriert seit
    Sep 2011
    Beiträge
    20
    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 :
    1
    2
    3
    
    var box = ['1','0','0','0','1','...};
     
    for (var i=1; i <= 13; i++) {if (box[i] == '1') {tu was();}; );

    Klappt wunderbar.
     

Ähnliche Themen

  1. dynamische Map
    Von MadCrusher im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 16.03.08, 14:26
  2. Dynamische <Divs> => Dynamische Ereignisse!?
    Von Geflügel im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 05.09.07, 21:17
  3. Dynamische GUI
    Von Speedkill im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 02.05.05, 08:16
  4. Dynamische IP
    Von 007_gorilla im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.01.05, 03:23
  5. Dynamische IP
    Von TheWolf im Forum PHP
    Antworten: 18
    Letzter Beitrag: 12.08.03, 12:23