0 votes
ago in SoSci Survey (dt.) by s304106 (110 points)

Hallo,

ich bin dabei für ein Projekt mithilfe der Zuordnungsaufgabe mit Reaktionszeiten einen Stroop-Test zu erstellen.
Es gibt eine Frage mit 95 Items.
Ich würde gerne dafür sorgen, dass nach einer Antwort direkt angezeigt wird, ob diese richtig/falsch war. Am besten kurz in der Zeit zwischen den Items (ich hab' momentan eine Verzögerung von 100ms eingestellt, in der "nur" das Fixationskreuz angezeigt wird).

Ich bin soweit gekommen, dass beim ersten Item richtig/falsch angezeigt wird, allerdings verschwindet das Feedback nicht wieder und der Test geht auch nicht weiter sondern bleibt auf diesem ersten Item stehen.

Hier ist mein Code bis jetzt:
(die restlichen 93 Items müssen dem Array am Anfang noch hinzugefügt werden)

<div id="answer" style="font-size: 24px; color: green; position: absolute;"></div>

<script type="text/javascript">
  <!--

  function selFilter(item, option) {
    // Mapping der richtigen Antworten
    var correct = {
      01: 1,
      02: 3
      // Weiterhin Mapping für alle Items hinzufügen
    };

    // Überprüfung, ob die gewählte Antwort korrekt ist
    var answerText = "";
    if (option == correct[String(item)]) {
      answerText = "richtig";
      document.getElementById("answer").style.color = "green";  // Richtig wird grün
    } else {
      answerText = "falsch";
      document.getElementById("answer").style.color = "red";  // Falsch wird rot
    }

    // Hier wird die Antwort angezeigt
    var answerElement = document.getElementById("answer");
    answerElement.innerText = answerText;

    // Setze die Position des Antworttexts in der Nähe des Items
    var itemElement = document.querySelector(`#${String(item).padStart(2, '0')}`);  // IDs sind nun "01", "02", "03", ...

    // Berechne die Position des Items und setze die Anzeige relativ dazu
    var itemRect = itemElement.getBoundingClientRect();
    answerElement.style.left = (itemRect.left + window.scrollX + itemRect.width / 2 - answerElement.offsetWidth / 2) + "px";
    answerElement.style.top = (itemRect.top + window.scrollY + itemRect.height + 10) + "px";  // 10px Abstand nach unten

    // Zeige die Antwort an
    answerElement.classList.add('show');  // Zeige die Antwort nach der Auswahl

    // Setze einen Timer, um das Feedback nach 500ms zu entfernen
    setTimeout(function() {
      answerElement.classList.remove('show');  // Verstecke die Antwort
    }, 500);  // 500ms Verzögerung

  }

  // Beispiel: Event-Listener nach Laden der Seite
  SoSciTools.attachEvent(window, "load", function() {
    assignmentSU01.setCallbackSelect(selFilter);
  });

  -->
</script>

Der letzte Teil ab setTimeout() funktioniert nicht mehr, gehe ich zumindest von aus. Ich vermute, dass ich irgendwie ein return 0; reinbringen muss, aber das ist nur Spekulation.

Ich möchte dafür sorgen, dass das Feedback wieder verschwindet (die 500ms waren erstmal provisorisch zum testen) und der Test automatisch weiterläuft, wie er das normalerweise tut, wenn der Code-Baustein nicht eingefügt ist (die Items werden zufällig abgerufen und für eine bestimmte Zeit präsentiert). Wie gesagt bleibt der Test momentan leider beim ersten Item stehen. Der programmierte Timer läuft allerdings weiter.

Vielen Dank für die Hilfe :)

ago by SoSci Survey (331k points)
So falsch sieht der Code eigentlich nicht aus. Was sagt denn die JavaScript-Fehlerkonsole Ihres Browsers dazu?
ago by s304106 (110 points)
Insofern ich die Ausgabe richtig verstehe scheint der QuerySelector Befehl die ID der Items nicht zu erkennen. Ich benutze .png Dateien für die Stroopbilder, benutzt Scosisurvey dementsprechend die Namen dieser Dateien? (Oder ein anderes Benennungsschema?).
Ich bin einfach davon ausgegangen, dass die Items durchnummeriert werden.
ago by SoSci Survey (331k points)
Abstrakte Antwort: Der Befehl document.querySelector() sucht Elemente anhand ihrer CSS-Klasse (class="..."). SoSci Survey vergibt hingegen IDs (id="..."), die sich über document.getElementById() auswählen lassen.

Please log in or register to answer this question.

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

...