Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Hallo Team des Supports!

Ich würde gern in javascript mit den Werten von Antworten arbeiten - wie kann ich diese Werte ansprechen? Mit z.B. "getElementbyID"?

An welcher Stelle finde ich diejenige ID einer Frage, mit welcher ich im javascript arbeiten kann?

Vielen Dank schonmal!

in SoSci Survey (dt.) by s112204 (150 points)
Es kommt ein wenig auf den Fragetyp an. Um welchen Fragetyp geht es denn?
Es handelt sich um die Fragetypen
- Offene Nennungen und
- Mehrfachauswahl (dort z. B. "Text über den Optionen).
Was genau haben Sie mit dem "Text über den Optionen" vor? Dort ist ja keine Nutzereingabe... möchten Sie den Text dynamisch ändern?

Bei den offenen Nennungen sind die Eingabefelder nach dem Schema <Fragekennung>[a-z] benannt. Das erste Feld in der Frage AB01 würden SIe also ansprechen mit...

document.getElementById("AB01a").value
Ich habe mehrere Mehrfachauswahl-Fragen kombiniert (per Zufallsgenerator) und verwende dabei den "Text über den Optionen" als den sich ändernden Aspekt der Frage. Die linke Spalte nach unten bleibt immer gleich.

Das habe ich gemacht, weil ich sonst alle Auswahloptionen nicht horizontal dargestellt bekommen hätte (15 mal Substantive und Wortgruppen). Ich habe mir dadurch eine Matrix erstellt.

Nun würde ich gern die eigentlichen Antworten (die "Texte über den Optionen") in interne Variablen für die Auswertung abspeichern, da ja nur der Antwortcode für meine linke Spalte abgespeichert wird und nicht meine eigentliche Antwort. Und deswegen suche ich nach einem Weg, wie ich auf diese zugreifen kann.

1 Answer

0 votes

Wenn Sie den "Text über den Optionen" als Beschriftung für die jeweilige Frage eintragen (das oberste Eingabefeld in der Frage), dann sollte das automatisch im Variablen-Label auftauchen.

Interne Variablen würden hier m.E. nicht besonders viel weiterhelfen, denn damit würden Sie ja lediglich die Anzahl der Variablen verdoppeln.

by SoSci Survey (91.8k points)
> Jedenfalls komme ich bei dem Punkt "umkopieren" nicht mehr mit.

Nun, Sie haben die 1/2-kodierten Variablen (eine pro Mehrfachauswahlpunkt) im Datensatz. Nun haben Sie m.E. zwei Möglichkeiten: (1) Sie können in Excel nochmal so viele Variablen anlegen, und diese bekommen dann entweder den Text "von oben" (also aus Zeile 2) oder nicht. Oder (2) Sie können schon im Fragebogen neue (interne) Variablen verwenden, um die Texte hineinzuschreiben, falls das Auswahlfeld markiert wurde (Code 2).

In Excel wäre es die o.g. Formel plus ca. 5 Klicks. In SoSci Survey wäre es ein PHP-Code mit 2-3 FOR-Schleifen. Alles nicht dramatisch :)
Es tut mir leid, Sie antworten mir leider nicht auf meine Frage.

Ich frage nicht nach einer Möglichkeit der Auswertung im Excel, sondern wie ich bei dem Fragetyp Mehrfachnennung den "Text über den Optionen" in einer internen Variable abspeichern kann?
> sondern wie ich bei dem Fragetyp Mehrfachnennung den "Text über den Optionen" in einer internen Variable abspeichern kann?

Ich kann auch gerne direkt auf Ihre Frage antworten:

put('IV01_01', 'Hier können Sie den Text eintragen');

Und wenn Sie unbedingt nach einer JavaScript-Lösung suchen, dann sähe sie wie folgt aus:

document.getElementById("IV01_01").value = "Hier können Sie den Text eintragen";

Aber ich bin ziemlich sicher, dass es Ihnen nicht viel bringt, dass ich Ihre Frage beantwortet habe. Denn m.E. wollten Sie eigentlich wissen, wie Sie an den Text herankommen, den Sie dort "über den Optionen" eingetragen haben.

Diesen Text können Sie mittels PHP nicht abrufen, aber das macht auch nichts, weil Sie ja wissen, was Sie dort eingetragen haben. Also können Sie die Texte ebenso in einem Array ablegen und dann abfragen:

$texte = array(
  'AB01' => 'Text über Frage A',
  'AB02' => 'Text über Frage B',
  'AB03' => 'Text über Frage C',
  'AB04' => 'Text über Frage D'
);

Mit $texte[$fragekennung] bekommen Sie nun auch den Text als Variable. Auch dies als PHP (s.o.) oder mit ein paar anderen Zeichen als JavaScript umsetzbar. Aber auch hier behaupte ich, dass Sie das einer erfolgreichen Auswertung nicht näher bringt.

Aus diesem Grunde habe ich oben einige Lösungsmöglichkeiten aufgezeigt, wie Sie im Datensatz das bekommen, was Sie - laut Ihrer Beschreibung - benötigen.
Erstmal wieder vielen Dank für Ihre ausführliche Antwort!

Wie ich grundsätzlich auf einer internen Variable einen Wert abspeichere (mit PHP und JS) habe ich mir in der Anleitung durchgelesen und ausprobiert - das funktioniert.

Ich habe auch die Möglichkeit durchdacht, mir nur die Fragenkennung und abzuspeichern und in der Auswertung über eine Codierungstabelle (ca. 360 Werte) wieder den von mir vorher eingegeben Wert zu entschlüsseln.
Sehr viel einfacher wäre es, die entsprechenden 6 Werte einfach gleich abzuspeichern (z. B. in einer internen Variable). Das wäre dann ohne Codierung - Entcodierung in der Auswertung.


Sie schreiben ein für mich interessantes Beispiele in Ihrer Antwort:

document.getElementById("IV01_01").value = "Hier können Sie den Text eintragen";

Jetzt müsste ich ja nur noch den Abschnitt "Hier können Sie den Text eintragen" mit den 'Text über den Optionen" der Mehrfachauswertungen erstetzen.

Und hier ist die ganze Zeit meine Frage: wie komme ich an diesen Text heran und kann ihn mit ihrem JS-Beispiel verwenden?


Danke für Ihre Geduld!
> wie komme ich an diesen Text heran und kann ihn mit ihrem JS-Beispiel verwenden?

Aktuell gar nicht (Sie sind er erste, der danach fragt) - das ist auch nicht notwendig, denn die Werte verändert sich ja nicht. Sie schreiben die Texte einfach in ein Array und lesen das dann aus (vgl. mein letztes Beispiel).

Wenn Sie keine Lust auf 360 Extra-Variablen haben, dann können Sie mittels PHP-Schleifen übrigens auch einfach alle Text gleich zu einer Komma-separierten Liste o.ä. zusammenfassen lassen. Je nachdem, was Sie am Ende in der Auswertung damit vorhaben...
...