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 [08.08.2025 20:32] (aktuell) – [Sichtbare Auswahl] 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 | + | Der folgende JavaScript-Code |
| + | |||
| + | <code javascript> | ||
| + | <script type="text/ | ||
| + | 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(" | ||
| + | }); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Schieberegler ===== | ||
| + | |||
| + | Die JavaScript-Klasse '' | ||
| + | |||
| + | <code javascript> | ||
| + | <script type=" | ||
| + | window.addEventListener(" | ||
| + | // Frage TX01 anzeigen, wenn im Schieberegler SL01_01 ein Wert zwischen 91 und 101 eingestellt wurde | ||
| + | new SoSciTools.ToggleSelection(" | ||
| + | }); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Alternative Fragen | ||
| Sie haben eine Dropdown-Auswahl " | Sie haben eine Dropdown-Auswahl " | ||
| Zeile 161: | Zeile 254: | ||
| **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 ==== | ||