0 votes
in SoSci Survey (dt.) by s081672 (120 points)

Hallo,

ich möchte bei mehreren Fragen die Funktion "Fragen bei Auswahl einer bestimmten Option sofort einblenden" verwenden.

Ich habe den entsprechenden Textbaustein erstellt und jeweils die HTML-Codes der Antwortoptionen sowie der darauffolgenden Frage angepasst.

Beispielsweise soll nach der Frage nach der aktuellen Erwerbstätigkeit mit sieben Auswahlmöglichkeiten (arbeitslos gesundheitsbedingt, arbeitslos nicht gesundheitsbedingt, berentet gesundheitsbedingt, berentet nicht gesundheitsbedingt, teilzeitarbeitend gesundheitsbedingt, teilzeitarbeitend nicht gesundheitsbedingt, vollzeitarbeitend) eine offene Frage nach der hauptsächlichen beruflichen Tätigkeit gestellt werden - allerdings natürlich nur bei Personen, die auf die vorherige Frage mit teilzeit- oder vollzeitarbeitend geantwortet haben.

Den javascript-Textbaustein habe ich, wie angegeben, unter die jeweiligen Fragen angeordnet. Trotzdem ist das Texteingabefeld weiterhin immer von Beginn an zu sehen.

Der Textbaustein sieht folgendermaßen aus:

<script type="text/javascript">
<!--
var optionA = document.getElementById("AM07_01a"); // AM07_01a ist die HTML-ID der Auswahloption "vollzeitarbeitend"
var optionB = document.getElementById("AM07_02a"); // Option "teilzeitarbeitend (gesundheitsbedingt)"
var optionC = document.getElementById("AM07_03a"); // Option "teilzeitarbeitend (NICHT gesundheitsbedingt)"
var optionD = document.getElementById("AM07_04a"); // Option "berentet (aus Gesundheitsgründen)"
var optionE = document.getElementById("AM07_05a"); // Option "berentet (NICHT gesundheitsbedingt)"
var optionF = document.getElementById("AM07_06a"); // Option "arbeitslos (aus Gesundheitsgründen)"
var optionG = document.getElementById("AM07_07a"); // Option "arbeitslos (NICHT gesundheitsbedingt berentet/krankgeschrieben)"
var frage = document.getElementById("AM08_01_qst");  // HTML-ID der Texteingabe
 
function toogle() {
  if ((optionA.checked) || (optionB.checked)) || (optionC.checked)) {
    frage.style.display = "";
  } else {
    frage.style.display = "none";
  }
}
 
SoSciTools.attachEvent(optionA, "click", toogle);
SoSciTools.attachEvent(optionB, "click", toogle);
SoSciTools.attachEvent(optionC, "click", toogle);
SoSciTools.attachEvent(optionD, "click", toogle);
SoSciTools.attachEvent(optionE, "click", toogle);
SoSciTools.attachEvent(optionF, "click", toogle);
SoSciTools.attachEvent(optionG, "click", toogle);
 
toogle();
// -->
</script>

Ich habe nun Verschiedenes ausprobiert, komme aber über die bisherigen Fragen hierzu im Support-Forum nicht weiter. Habe ich beim Textbaustein irgendetwas falsch gemacht?

Im Voraus vielen Dank für eine Rückmeldung!
VG

by SoSci Survey (304k points)
Tipp: Wenn Sie PHP-Code oder JavaScript-Code markieren und auf den Knopf {} drücken, wird er eingerückt und automatisch als Code formatiert. Für Ihre Frage haben wir das gleich erledigt.

1 Answer

0 votes
by SoSci Survey (304k points)

Um Fehler im Kontext von JavaScript zu finden, ist die Fehlerkonsole Ihres Browsers die informationsquelle der Wahl. Mehr dazu s. JavaScript -> Fehler finden

Im vorliegenden Fall liegt es vermutlich daran, dass in folgender Zeile eine Klammer zu viel steht:

  if ((optionA.checked) || (optionB.checked)) || (optionC.checked)) {

Korrekt wäre hier:

  if ((optionA.checked) || (optionB.checked) || (optionC.checked)) {

Ebenso korrekt wäre übrigens auch:

  if (optionA.checked || optionB.checked || optionC.checked) {
by s081672 (120 points)
Die Klammersetzung war tatsächlich der Fehler.
Option 3 hat funktioniert.

Vielen Dank für die überaus schnelle Hilfe!

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

...