0 votes
in SoSci Survey (dt.) by s086064 (180 points)
edited by SoSci Survey

Liebes SoSciSurvey-Team,

ich will gerne Items abhängig von den Antworten ausblenden.
Beispiel:
Item 1(E104): Frage nach Erwerbsstaus 1) Vollzeit, 2) Teilzeit, 3) arbeitslos
Item 2 (E105) soll nur bei Antwort 2) und 3) eingeblendet werden bzw. bei Antwort 1) ausgeblendet.

Hierfür habe ich gelesen, dass ich einen JavaScript Code verwenden soll.
Ich habe den Folgenden versucht, es klappt leider nicht bei der Fragebogenzusammenstellung.

Ich freue mich über Unterstützung hierbei!

Lieben Dank!

<script type="text/javascript">
<!--
var dropdown = document.getElementById("E114");  
var frage = document.getElementById("E115_qst"); 
 
function toogle() {
  if (dropdown.value == "2", "3") {  
    frage.style.display = "";
  } else {
    frage.style.display = "none";
  }
}
 
SoSciTools.attachEvent(dropdown, "change", toogle); 
SoSciTools.attachEvent(dropdown, "click", toogle);  
toogle();  
// -->
</script>
by s086064 (180 points)
Lieben Dank - Sie haben recht es funktioniert! Super!


Leider komme ich - trotz Einsicht der Fehlermeldung - auf einer anderen Seite nicht weiter:
https://www.soscisurvey.de/resistkrebs/?act=BrUv29O5cLLRS1b9in8KKYDY

Ich habe dort versucht einzustellen, dass wenn Item 103 mit ja (Option A) beantwortet wird, sowohl Item 104 und 105 ausgeblendet werden. Und wenn 103 mit nein beantwortet wird, dass zunächst nur 104 gezeigt wird und 105 zunächst ausgeblendet bleibt. 105 soll nur erscheinen, wenn 104 die Option ("Sonstiges Land; -1) ausgewählt wird.

Der folgende Fehler wird mir bei der Programmierung (Ausblendung Item 104 und 105 wenn 103 mit Ja beantwortet wird) angezeigt:
SCRIPT5007: SCRIPT5007: Unable to set property 'display' of undefined or null reference
Können Sie mir hier weiterhelfen? Lieben Dank.
by SoSci Survey (302k points)
In Firefox lautet die Meldung ein wenig anders, meint aber das gleiche:

TypeError: frage.style is undefined

Und zwar hat das Objekt "frage" kein Attribut/Inhalt "style". Das heißt am wahrscheinlichsten, dass "frage" keinen Inhalt hat. Diese Variable wiederum wird hier definiert:

var frage = document.getElementById("E104_qst") || ("E105_qst");  

Okay ... das bedeutet: Liebes JavaScript, sieht bitte nach, ob es die eine oder die andere Frage gibt. In der Variable steht also kein Verweis mehr auf das Element der Frage, sondern einfach nur noch "true", also ja, es gibt da was.

Zwei Fragen brauchen zwei Variablen:

var frage1 = document.getElementById("E104_qst");
var frage2 = document.getElementById("E105_qst");  

Und dann später im Code:

frage1.style.display = "";
frage2.style.display = "";

Und das gleiche nochmal mit "none".
by s086064 (180 points)
Lieben Dank für die schnelle Rückmeldung.
Ich bekomme immer noch dieselbe Fehlermeldung. Woran kann das liegen?
by SoSci Survey (302k points)
Wenn ich es richtig sehe, haben Sie den JavaScript-Code über der Frage E104 in die Fragebogen-Seite eingebunden. An dieser Stelle existiert dsa HTML-Element mit der ID "E104_qst" noch nicht. Bitte schieben Sie den JavaScript-Code einfach weiter nach unten.
by s086064 (180 points)
Perfekt! Herzlich Dank für die tolle Unterstützung!

1 Answer

0 votes
by SoSci Survey (302k points)

Die folgende Syntax ist kein gültiges JavaScript:

if (dropdown.value == "2", "3") {  

Ich denke, Sie meinen das hier:

if ((dropdown.value == 2) || (dropdown.value == 3)) {  

Wenn es damit noch nciht funktioniert, werfen Sie bitte einen Blick in die Fehlerkonsole Ihres Brwosers und posten Sie hier den evtl. angezeigten Fehler sowie einen Pretest-Link direkt (!) zur betroffenen Fragebogen-Seite. Danke.

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

...