0 votes
in SoSci Survey (dt.) by s166451 (145 points)
edited by SoSci Survey

Hallo!

In meiner Studie möchte ich den Versuchspersonen direktes Feedback zu ihrer Antwort auf eine Frage geben. Dafür habe ich Auswahlfragen mit 4 Antwortoptionen konstruiert, von denen nur eine richtig ist. Mit Hilfe dieser Seite: https://www.soscisurvey.de/help/doku.php/de:create:dynamic habe ich einen Java Skript Code erstellt, bei dem nach dem Anklicken der Antwortoption direkt ein Text mit "Das war richtig" oder "Das war leider falsch" erscheint und die jeweilige Antwortoption entweder in grün oder rot hervorgehoben wird. Mein Problem ist jetzt, dass nach dem klicken auf eine Antwortoption und dem erscheinen des Feedbacks, die Antwort noch einmal geändert werden kann. Das Hervorheben durch die Farbe bleibt dabei bestehen. Man kann also so lange jede Option durchprobieren, bis man die richtige Antwort gefunden hat.
Das würde mir leider mein Design ein wenig zerhauen. Ich möchte eigentlich, dass die Versuchspersonen nur eine Option auswählen und diese dann nicht mehr korrigieren können, sondern nur noch das Feedback zu ihrer Antwort erhalten.

So sieht mein Code für das Feedback zur Zeit aus:

<script type="text/javascript">
//<!--
var Richtig = document.getElementById("LF01_04a");  // LF01_04a ist die HTML-ID der Auswahloption "Richtig Antwort"
var Falsch1 = document.getElementById("LF01_01a");  // Falsch
var Falsch2 = document.getElementById("LF01_02a");  // Falsch
var Falsch3 = document.getElementById("LF01_03a");  // Falsch
var FBrichtig = document.getElementById("FB01_qst");  // HTML-ID der Texteingabe
var FBfalsch = document.getElementById("FB02_qst");
var RichtigC = document.getElementById("LF01_04_container"); //Container als Variable für die Farbe
var FalschC1 = document.getElementById("LF01_01_container");
var FalschC2 = document.getElementById("LF01_02_container");
var FalschC3 = document.getElementById("LF01_03_container");
 
function toggle() {
  if (Richtig.checked) {
    // Wurde die Richtige Antwort ausgewählt, dann wird das Feedback angezeigt
    // Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
    FBrichtig.style.display = "";
    FBfalsch.style.display = "none";
    RichtigC.style.backgroundColor = "lightgreen"; //Richtige Antwort grün anzeigen
  } else {
    // Mit der Anzeigeoption "none" wird die Frage ausgeblendet
    FBrichtig.style.display = "none";
    FBfalsch.style.display = "";
  }
    //Wurde eine falsche Antwort geklickt, dann soll nur diese rot angezeigt werden.
    if (Falsch1.checked) {
    // Wurde die 1. Falsche Antwort ausgewählt, dann soll dieser Container rot angezeigt werden
    FalschC1.style.backgroundColor = "red";
    }
    if (Falsch2.checked) {
    // Wurde die 2. Falsche Antwort ausgewählt, dann soll dieser Container rot angezeigt werden
    FalschC2.style.backgroundColor = "red";
    }
    if (Falsch3.checked) {
    // Wurde die 3. Falsche Antwort ausgewählt, dann soll dieser Container rot angezeigt werden
    FalschC3.style.backgroundColor = "red";
    }
}

// Die Funktion soll jedesmal ausgeführt werden, wenn eine der drei Optionen angeklickt wird
SoSciTools.attachEvent(Richtig, "click", toggle);
SoSciTools.attachEvent(Falsch1, "click", toggle);
SoSciTools.attachEvent(Falsch2, "click", toggle);
SoSciTools.attachEvent(Falsch3, "click", toggle);
 
// Und jetzt gleich soll sie auch ausgeführt werden, damit die Anzeige zu Beginn korrekt ist
// (z.B. ausblenden der Texteingabe zu Beginn)
toggle();
//-->
</script>

Auf der Seite sind neben der Auswahlfrage noch die HTML-Codes für Richtiges Feedback (FB_01_qst) und falsches Feedback (FB_02_qst).

Ich bin über jede Hilfe dankbar!

1 Answer

0 votes
by SoSci Survey (328k points)
selected by s166451
 
Best answer

Wenn Sie die korrekte Antwort per JavaScript direkt auf der Seite verraten, werden Sie eine Manipulation nicht komplett ausschließen können - alles, was Sie mittels JavaScript bauen lässt sich umgehen, indem Sie JavaScript einfach abschalten (nachdem Sie die korrekten Antworten notiert haben).

Aber wenn es Ihnen "nur" um den Otto-Normal-Befragten geht, dann können Sie nach Bewertung der Antwort das Auswahlfeld deaktivieren. Setzen Sie dafür das Attribut "disabled" mit dem Wert true.

Richtig.setAttribute("disabled", true);
Falsch1.setAttribute("disabled", true);
Falsch2.setAttribute("disabled", true);
Falsch3.setAttribute("disabled", true);
by s166451 (145 points)
Danke das hat schon sehr geholfen! Jetzt habe ich aber das Problem, dass die erste Antwort, die gegeben wird, nicht gespeichert wird. Wie kann ich das nun beheben?
Liebe Grüße
by SoSci Survey (328k points)
Ach ja ... manche Browser übermitteln für deaktivierte Auswahlfelder keine Daten mehr. Schlecht.

Option 1: Reaktivieren sie die Felder für das Abschicken wieder.

SoSciTools.questionnaire.attachCheck(function() {
    Richtig.removeAttribute("disabled");
    Falsch1.removeAttribute("disabled");
    Falsch2.removeAttribute("disabled");
    Falsch3.removeAttribute("disabled");
    return true;
});

Option 2: Speichern Sie die Antwort in eine interne Variable, vgl. https://www.soscisurvey.de/help/doku.php/de:create:questions:internal#interne_variablen_und_javascript

Option 3: Deaktivieren Sie die Auswahlfelder nicht, sondern schalten Sie sie mittels .style.display="none" unsichtbar, und zeigen Sie stattdessen etwas anderes an.

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

...