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

Hallo,

ich habe schon Mal in einem anderen SoSci Survey-Projekt mit JavaScript gearbeitet, nur leider komme ich in meinem aktuellen Projekt absolut nicht weiter. Ich bin also absolute HTML-Anfängerin.

Es soll auf einer Fragebogenseite aus einer Itembatterie bei drei verschiedenen Items, je nachdem welche Antwortoptionen ("trifft eher zu" und "trifft voll und ganz zu") ausgewählt werden, im Anschluss auf der gleichen Seite drei verschiedene offene Texteingabe-Fragen angezeigt werden.
Ich habe dafür schon verschiedenes versucht und mehrere Anleitungen befolgt und mein letzter Versuch war folgender Code:

<script type="text/javascript">
function DynamicFilter(inPrefix, textId) {
    // Antwortoptionen der jeweiligen IN13-Frage
    var optionA = document.getElementById(inPrefix + "_011");  // "trifft überhaupt nicht zu"
    var optionB = document.getElementById(inPrefix + "_012");  // "trifft eher nicht zu"
    var optionC = document.getElementById(inPrefix + "_013");  // "teils/teils"
    var optionD = document.getElementById(inPrefix + "_014");  // "trifft eher zu"
    var optionE = document.getElementById(inPrefix + "_015");  // "trifft voll und ganz zu"

    // zugehörige offene Texteingabe
    var frage = document.getElementById(textId);

    function toggle() {
        // Wenn D oder E gewählt ist → Texteingabe anzeigen, sonst ausblenden
        if (optionD.checked || optionE.checked) {
            frage.style.display = "";   // oder "block", je nach deinem Layout
        } else {
            frage.style.display = "none";
        }
    }

    // Event-Handler für alle Optionen
    SoSciTools.attachEvent(optionA, "click", toggle);
    SoSciTools.attachEvent(optionB, "click", toggle);
    SoSciTools.attachEvent(optionC, "click", toggle);
    SoSciTools.attachEvent(optionD, "click", toggle);
    SoSciTools.attachEvent(optionE, "click", toggle);

    // Initialzustand
    toggle();
}

// Konkreter Aufruf für deine Frage:
new DynamicFilter("IN13_01", "IN21_qst");
new DynamicFilter("IN13_03", "IN22_qst");
new DynamicFilter("IN13_04", "IN23_qst");
</script>

Das funktioniert aber alles nicht und jetzt wird der Code sogar noch im Fragebogen angezeigt. Ich wäre Ihnen sehr dankbar, wenn Sie mit weitehelfen könnten.

Vielen Dank und viele Grüße

1 Answer

0 votes
by SoSci Survey (380k points)

jetzt wird der Code sogar noch im Fragebogen angezeigt

Okay, das ist vermutlich einfach zu lösen: Stellen Sie bitte sicher, das bei "Darstellung" die Option "HTML-Code" ausgewählt ist (nicht "einfacher Text" oder "formatiert").

Wenn es dann immer noch nicht funktioniert, öffnen Sie bitte mal die JavaScript-Konsole im Browser und sehen Sie nach, ob und ggf. welche Fehlermeldung dort angezeigt wird.

Wenn wir einen Blick auf die Seite werfen sollen, erstellen Sie bitte einen Pretest-Link direkt (!) zu der betroffenen Seite und posten Sie diesen hier als Kommentar.

by s310760 (120 points)
edited by s310760
Ohje, vor lauter Rumprobieren mit verschiedenen Codes ist mir gar nicht aufgefallen, dass ich den Code nicht als HTML-Code angelegt habe. Das klappt auf jeden Fall schon Mal.

Das eigentliche Problem besteht allerdings weiterhin und es wird folgende Fehlermeldung angezeigt:
Uncaught Error: No element specified for SoSciTools.attachEvent()
    attachEvent https://s2survey.net/script/SoSciTools.min.js?i=1415:2
    DynamicFilter https://s2survey.net/Umfrage_DLC_2026/index.php?i=D1K4QZWOHYR8&rnd=HQUY:1616
    <anonymous> https://s2survey.net/Umfrage_DLC_2026/index.php?i=D1K4QZWOHYR8&rnd=HQUY:1627
SoSciTools.min.js:2:3884
    attachEvent https://s2survey.net/script/SoSciTools.min.js?i=1415:2
    DynamicFilter https://s2survey.net/Umfrage_DLC_2026/index.php?i=D1K4QZWOHYR8&rnd=HQUY:1616
    <anonym> https://s2survey.net/Umfrage_DLC_2026/index.php?i=D1K4QZWOHYR8&rnd=HQUY:1627

Hier der Pretest-Link zu der entsprechenden Seite...

Das Ziele wäre es, dass die Fragen 4, 5 und 6 nur dann angezeigt werden, wenn bei den Items IN13_01, IN13_03 und IN13_04 jeweils "trifft eher zu" oder "trifft voll und ganz zu" ausgewählt wurde.

Viele lieben Dank schon Mal und viele Grüße
by SoSci Survey (380k points)
Die Fehlermeldung bezieht sich auf diese Zeilen:

SoSciTools.attachEvent(optionA, "click", toggle);
SoSciTools.attachEvent(optionB, "click", toggle);
...

und sie besagt, dass kein Element angegeben wurde, also dass optionA, optionB, ... nicht vorhanden sind. Definiert werden diese Variablen weiter oben:

var optionA = document.getElementById(inPrefix + "_011");  // "trifft überhaupt nicht zu"
var optionB = document.getElementById(inPrefix + "_012");  // "trifft eher nicht zu"

(1) Entweder Sie haben nicht 5 Antwortoptionen zu Item oder (2) die Kennung, die sich aus inPrefix + "_011" ergibt, gibt es auf der Seite nicht oder (3) Sie haben den JavaScript-Code nicht unterhalb der Fragen, sondern darüber platziert.

Ich tippe auf (2). inprefix is bei Ihnen IN13_01 (u.s.w.), und vermutlich ist die HTML-Kennung der Auswahlfelder der Skala IN13_011, IN13_012, ...

Demnach müsste es heißen:

var optionA = document.getElementById(inPrefix + "1");  // "trifft überhaupt nicht zu"
var optionB = document.getElementById(inPrefix + "2");  // "trifft eher nicht zu"
by s310760 (120 points)
Ich habe den Code angepasst, aber leider besteht das Problem weiterhin. Jetzt kommen sogar noch mehr Fehlermeldungen dazu:

Uncaught TypeError: can't access property "style", frage is null
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1611
    DynamicFilter https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1623
    <anonymous> https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1627
index.php:1611:13
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1611
    DynamicFilter https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1623
    <anonym> https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1627

Neue Fehlermeldungen:
Uncaught TypeError: can't access property "style", frage is null
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1609
index.php:1609:13
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1609

Uncaught TypeError: can't access property "style", frage is null
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1611
2 index.php:1611:13
    toggle https://s2survey.net/Umfrage_DLC_2026/index.php?i=TNXZJEAHCRBN&rnd=DAWU:1611

Eine weitere Frage zu (3): Ich habe den Code zwischen der Itembatterie (IN13_01 bis IN13_08) und den Fragen mit der offenen Texteingabe platziert. War das richtig?

Kann ich den Pretest-Link wieder rauslöschen oder bentöigen Sie diesen noch? Der Fragebogen noch nicht final veröffentlicht ist
by SoSci Survey (380k points)
Oh, den Pretest-Link hatte ich unter den ganzen Fehlermeldungen übersehen. Danke. Die neuen Fehlermeldungen sind ein Fortschritt. Sie besagen, dass IN21_qst nicht gefunden wird.

Das liegt (da ist der Pretest-Link gerade hilfreich) an (3): Der JavaScript-Code muss unter alle Fragen, die mit dem Code zu tun haben. Im Moment steht es noch über IN21.
by s310760 (120 points)
Mega!!!! Es funktioniert. Vielen herzlichen Dank!

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

Categories

...