Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:create:dynamic [24.05.2022 18:02] – [Grundwissen] admin | de:create:dynamic [12.04.2025 12:08] (aktuell) – [Dropdown] admin | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
Prinzipiell sind mit JavaScript und dem Document Object Model (DOM) sehr umfassende Modifikationen innerhalb einer Fragebogenseite möglich, allerdings erfordert dies mitunter fortgeschrittene Programmier-Kenntnisse. Diese Anleitung beschränkt sich darauf, wie man damit eine Frage in Abhängigkeit einer Antwort ein- bzw. ausblendet. | Prinzipiell sind mit JavaScript und dem Document Object Model (DOM) sehr umfassende Modifikationen innerhalb einer Fragebogenseite möglich, allerdings erfordert dies mitunter fortgeschrittene Programmier-Kenntnisse. Diese Anleitung beschränkt sich darauf, wie man damit eine Frage in Abhängigkeit einer Antwort ein- bzw. ausblendet. | ||
+ | |||
+ | **Tipp:** Falls der JavaScript-Code nicht auf Anhieb funktioniert, | ||
+ | |||
===== Grundwissen ===== | ===== Grundwissen ===== | ||
- | - In JavaScript gibt es so genannte //Event Handler//. Das sind Funktionen, die ausgeführt werden, wenn der Benutzer irgend etwas auf der Seite macht -- wenn also Ereignisse (//Events//) auf der Seite passieren. Solche Ereignisse können ein Klick des Teilnehmers sein ('' | + | - In JavaScript gibt es so genannte //Event Handler//. Das sind Funktionen, die durch Aktionen des Nutzers |
+ | * ''%%'click'%%'' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * und viele andere. | ||
- Jedes Element einer (HTML-)Internetseite hat eine ganze Reihe von Eigenschaften. SoSci Survey erstellt die einzelne Fragebogen-Seite als HTML-Seite -- und alle Fragen und Eingabefelder sind ihrerseits HTML-Elemente, | - Jedes Element einer (HTML-)Internetseite hat eine ganze Reihe von Eigenschaften. SoSci Survey erstellt die einzelne Fragebogen-Seite als HTML-Seite -- und alle Fragen und Eingabefelder sind ihrerseits HTML-Elemente, | ||
- Die Elemente einer HTML-Seite lassen sich am einfachsten anhand ihrer HTML-ID ansprechen. SoSci Survey vergibt für alle Eingabefelder automatisch HTML IDs, die sich an der Frage- bzw. Itemkennung orientieren. | - Die Elemente einer HTML-Seite lassen sich am einfachsten anhand ihrer HTML-ID ansprechen. SoSci Survey vergibt für alle Eingabefelder automatisch HTML IDs, die sich an der Frage- bzw. Itemkennung orientieren. | ||
Zeile 14: | Zeile 22: | ||
- In SoSci Survey kann man beliebige Inhalte in eine Fragebogenseite aufnehmen. Also auch JavaScript Code. Dies geschieht am einfachsten, | - In SoSci Survey kann man beliebige Inhalte in eine Fragebogenseite aufnehmen. Also auch JavaScript Code. Dies geschieht am einfachsten, | ||
- | **Wichtig: | ||
**Hinweis: | **Hinweis: | ||
Zeile 21: | Zeile 28: | ||
**Hinweis: | **Hinweis: | ||
+ | |||
+ | **Hinweis: | ||
**Tipp:** Wenn der Teilnehmer sieht, dass eine der Auswahloptionen mit zusätzlicher Arbeit verbunden ist, dann könnte dies sein Antwortverhalten beeinflussen. Ein klassischer [[filters|Filter]] mit Abfrage der zweiten Frage auf der Folgeseite kann hier sinnvoller sein. | **Tipp:** Wenn der Teilnehmer sieht, dass eine der Auswahloptionen mit zusätzlicher Arbeit verbunden ist, dann könnte dies sein Antwortverhalten beeinflussen. Ein klassischer [[filters|Filter]] mit Abfrage der zweiten Frage auf der Folgeseite kann hier sinnvoller sein. | ||
- | ===== Beispiel 1a: Sichtbare Auswahl ===== | + | |
+ | ===== Sichtbare Auswahl ===== | ||
Abhängig von einer Ja/ | Abhängig von einer Ja/ | ||
Der folgende JavaScript-Code wird als Textbaustein gespeichert (// | Der folgende JavaScript-Code wird als Textbaustein gespeichert (// | ||
+ | |||
+ | <code javascript> | ||
+ | <script type=" | ||
+ | window.addEventListener(" | ||
+ | // Frage TX01 anzeigen, wenn in JN01 entweder 1 oder 2 ausgewählt wurde | ||
+ | new SoSciTools.ToggleSelection(" | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Alterantiv kann die Funktionalität auch ohne '' | ||
<code javascript> | <code javascript> | ||
Zeile 64: | Zeile 85: | ||
</ | </ | ||
- | ===== Beispiel 1b: Mehrere gleichartige Fragen ===== | + | |
+ | ===== Pflichtfragen ===== | ||
+ | |||
+ | Damit Fragen dynamisch eingeblendet werden können, müssen sie schon (unsichtbar) auf der Seite vorhanden sein. Blenden Sie keine Pflichtfragen ein/aus: Auch wenn der Teilnehmer unsichtbare Fragen nicht beantworten kann, besteht SoSci Survey bei Pflichtfragen auf eine Antwort. | ||
+ | |||
+ | Wenn Sie die Antwort auf eine (womöglich) ausgeblendete Frage prüfen möchten, verwenden Sie eine [[: | ||
+ | |||
+ | Nachfolgend ein Beispiel-Code passend zum obigen Beispiel mit der sichtbaren Auswahl. Bitte denken Sie daran, dass der PHP-Code entweder unten auf der Seite bei " | ||
+ | |||
+ | <code php> | ||
+ | if ( | ||
+ | // Wird die Frage TX01 angezeigt? | ||
+ | ((value(' | ||
+ | // Fehlt die Antwort bei der Texteingabe-Frage TX01? | ||
+ | (trim(value(' | ||
+ | ) { | ||
+ | // Seite erneut anzeigen | ||
+ | repeatPage(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Mehrere gleichartige Fragen ===== | ||
Mitunter kommt es vor, dass dieselbe Funktion auf einer Fragebogen-Seite mehrfach zum Einsatz kommt. Wenn wir das vorige Beispiel nehmen: Nehmen wir einmal an, dass auf der Seite nicht nur eine Auswahl mit Zusatzfrage ist, sondern vier Auswahlfragen mit vier Zusatzfragen. | Mitunter kommt es vor, dass dieselbe Funktion auf einer Fragebogen-Seite mehrfach zum Einsatz kommt. Wenn wir das vorige Beispiel nehmen: Nehmen wir einmal an, dass auf der Seite nicht nur eine Auswahl mit Zusatzfrage ist, sondern vier Auswahlfragen mit vier Zusatzfragen. | ||
Zeile 72: | Zeile 116: | ||
Nachfolgend wird der JavaScript-Code von oben in eine Funktion bzw. Klasse '' | Nachfolgend wird der JavaScript-Code von oben in eine Funktion bzw. Klasse '' | ||
- | Diese Anleitung lässt das ''< | + | Diese Anleitung lässt das ''< |
<code javascript> | <code javascript> | ||
Zeile 126: | Zeile 170: | ||
- | ===== Beispiel 2: Dropdown ===== | + | ===== Dropdown ===== |
Eine zusätzliche Frage (" | Eine zusätzliche Frage (" | ||
+ | |||
+ | <code javascript> | ||
+ | <script type=" | ||
+ | window.addEventListener(" | ||
+ | // Frage DD02 anzeigen, wenn im Dropdown DD01 die Option 7 ausgewählt wurde | ||
+ | new SoSciTools.ToggleDropdown(" | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Alterantiv kann die Funktion auch ohne '' | ||
<code javascript> | <code javascript> | ||
Zeile 152: | Zeile 207: | ||
- | ===== Beispiel 3: Alternative Fragen ===== | + | ===== Rangordnung ===== |
+ | |||
+ | Bei einer Rangordnungsfrage (z.B. " | ||
+ | |||
+ | <code javascript> | ||
+ | < | ||
+ | function toggle() { | ||
+ | var frage = document.getElementById(' | ||
+ | var input = s2.RK01.item(2).input; | ||
+ | |||
+ | if ((input.value >= 1) && (input.value <= 3)) { | ||
+ | frage.style.display = ""; | ||
+ | } else { | ||
+ | frage.style.display = " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | window.addEventListener(" | ||
+ | s2.RK01.addEventListener(" | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Alternative Fragen | ||
Sie haben eine Dropdown-Auswahl " | Sie haben eine Dropdown-Auswahl " | ||
Zeile 161: | Zeile 239: | ||
**Tipp:** Das dynamische Einblenden von Fragen funktioniert auch in Kombination mit der [[: | **Tipp:** Das dynamische Einblenden von Fragen funktioniert auch in Kombination mit der [[: | ||
+ | |||
==== Fragebogen-Seite ==== | ==== Fragebogen-Seite ==== |