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

Hallo zusammen

Für meine Untersuchung benötige ich die Reaktionszeit der TN. Insgesamt sind es sechs Schieberegler, welche per Zufallsgenerator nacheinander auf separaten Seiten angezeigt werden (Stichwort: loopPage). Ich habe die Anleitung für den LatencyTimer länger studiert und auch hier im Forum nach Antworten gesucht; jedoch kenne ich mich mit JavaScript nicht genügend aus. Wie kann ich die Reaktionszeit pro Schieberegler messen?

Bisher habe ich einen "Interne Variablen" Baustein mit sechs Variablen erstellt und zusammen mit dem PHP-Code "library('LatencyTimer');" in Fragebogen zusammenstellen auf eine Seite gezogen. Zudem habe ich den Zufallsgenerator und die sechs Schieberegler bzw. den PHP-Code für die Frage-Rotation erstellt bzw. auch auf die oben erwähnte Seite bei Fragebogen zusammenstellen gezogen. Das mit dem Zufallsgenerator funktioniert, nur wird mir gar keine interne Variable bei den erhobenen Daten angezeigt.

Habe mit dem HTML-Code für JavaScript verschiedenes ausprobiert, hat jedoch nicht funktioniert. Dennoch hier, einer der Codes, welche ich versucht habe (interne Variable: "IV01"; Zufallsgenerator: "MR08"; Schieberegler: "MR09" bis "MR14"):

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    for (var i=1; i<=6; i++) {
        var item = MR08.item(i);
        var internal = IV01.item(i);
        timer.registerSlider('MR08','IV01');
    }
}
</script>

Für Unterstützung bin ich enorm dankbar!

Herzliche Grüsse

by SoSci Survey (282k points)
(1) Wenn Sie jedne Schieberegler auf einer eigenen Seite anzeigen, dann hat die Latenzzeitmessung einen kleinen Haken: Sie benötigen irgend einen Auslöser, ab wann Sie messen.

Wenn der Auslöser das Laden der Seite sein soll, dann müssen Sie als dritten Parameter in registerSlider() ein true eintragen.

(2) Sie haben ja nur immer einen Schieberegler pro Seite. Verwenden Sie daher bitte keine FOR-Schleife, sondern setzen Sie das i auf den reichtigen Wert. Das ist mitetls Platzhalter recht einfach möglich ... aber Sie müssten Ihren PHP-Code posten, damit ich konkreter werden kann.

(3) In registerSlider() geben Sie als ersten und zweiten Parameter bitte die vollständige Kennung der Items ein, nicht die Kennungen er Fragen.

Auch hier würde ich Platzhalter empfehlen, also z.B.

timer.registerSlider('MR08_0%item%','IV01_0%item%');

(4) Generell für die Arbeit mit JavaScript gilt: Werfen Sie unbedingt einen Blick in die Browser-Konsole, s. https://www.soscisurvey.de/help/doku.php/de:general:browser-tools
by s136909 (120 points)
Vielen Dank für die Antwort.

Leider hat es noch nicht geklappt. Daher schreibe ich nachfolgend, was ich genau in den Fragebogen auf eine Seite gezogen habe; in dieser Reihenfolge von oben nach unten:

1. Zufallsgenerator (MR08)
2. Interne Variablen (IV01)
3. PHP-Code:

library('LatencyTimer');

4. HTML-Code (ein wenig angepasst zu gestern; FOR.Schleife habe ich zwar entfernt, aber da mir nicht genau klar ist wie Platzhalter funktionieren, wollte ich es erstmal für die Zeitmessung des ersten Slider ausprobieren):

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    for (var key in "MR09_01") {
        var item = "MR09_01"[key];
        var itemID = "IV01_01"
        var internal = "IV01_01";
        timer.registerSlider("MR09_01", "IV01_01", true);
    }
}

</script>

5. PHP-Code (für Fragenrotation auf separaten Seiten):

$fragen = valueList('MR08', NULL, 'label');
 
$kennung = loopPage($fragen);
question($kennung);

Können Sie mit dem etwas anfangen und mir konkreter Antworten?
by SoSci Survey (282k points)
Sieht schonmal ganz gut aus. Was zeigt denn die JavaScript-Fehlerkonsole an?

Spontan fällt mir diese Zeile hier auf:

var item = "MR09_01"[key];

Das [key] macht hier keinen Sinn und müsste weg, weil es sonst wahrscheinlich ein Syntaxfehler ist. Und das FOR macht so auch keinen Sinn - aber nachdem Sie nur einen Schieberegler haben möchten, brauchen Sie ohnehin kein FOR.

Also ... erstmal wird es einfacher:

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    var itemID = "MR09_01"
    var internal = "IV01_01";
    timer.registerSlider(itemID , internal , true);
}
</script>

Oder noch kompakter:

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    timer.registerSlider("MR09_01", "IV01_01", true);
}
</script>
by s136909 (120 points)
Jetzt klappt's! Vielen herzlichen Dank!
Eine Verständnisfrage habe ich noch; siehe unten.

Ein Blick in Fehlerkonsole hat einen Syntaxfehler gezeigt; eine Klammer fehlte. Habe dies korrigiert und noch die "mixed multiStore" als vierten Parameter in registerSlider() angegeben (die Anzahl internen Variablen entsprechend verdoppelt). Damit es für alle sechs Slider klappt habe ich den HTML-Code sechs mal eingefügt mit entsprechend angepasster Variablenkennung. Für den ersten Slider habe ich nun:

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    timer.registerSlider("MR09_01", "IV01_01", true, "IV01_02");
})
</script>

Zu meinem Verständnis: Die Daten für "mixed multiStore" entsprechen der Anzahl Milisekunden zwischen der fertig geladenen Seite und bis das letzte mal der Schieberegler betätigt wird, richtig? Der Weiter-Knopf beendet die Zeitmessung also nicht. Und für die jeweils erste Zeitmessung liegen die Zeitangaben bei mir jeweils unter 0.1 Sekunden, obwohl ich noch gar nichts gemacht habe. Für meine Untersuchung an sich ist das zwar nicht relevant, da es mir um die finale Zeit geht. Aber dennoch würde ich gern verstehen an was das liegt. Haben Sie eine Idee?

Nochmals vielen Dank und liebe Grüsse

2 Answers

+1 vote
by SoSci Survey (282k points)

Die Daten für "mixed multiStore" entsprechen der Anzahl Milisekunden zwischen der fertig geladenen Seite und bis das letzte mal der Schieberegler betätigt wird, richtig?

Eigentlich müsste darin die Zeit zwischen erster und letzter Veränderung gespeichert werden. Ich müsste das nochmal im Code nachsehen, aber Sie können es einfach testen. Laden Sie die Seite, zählen Sie bis 3, setzen Sie einen Wert, verändern Sie diesen gleich wieder, und klicken Sie anschließend auf "Weiter".

Der Weiter-Knopf beendet die Zeitmessung also nicht.

Nein, der Weiter-Knopf ist für die Zeitmessung irrelevant.

Und für die jeweils erste Zeitmessung liegen die Zeitangaben bei mir jeweils unter 0.1 Sekunden, obwohl ich noch gar nichts gemacht habe.

Das klingt nach einem Fehler in der Messung. Das muss ich mir ansehen (wir allerdings ein paar tage dauern). Haben Sie die Regler untereinander verknüpft oder ist anderweitig irgend ein Wert voreingestellt? Womöglich wird hier die Zeit zwischen dem Laden der Seite und dem Initialisieren des Regler gespeichert (was natürlich so nicht sein sollte).

by s136909 (120 points)
1) Habe es nun mehrmals getestet. So wie ich das sehe, wird wie von mir beschrieben, die Reaktionszeit insgesamt erfasst.

2) Das mit der ersten Zeitmessung ist komisch. Als ich es heute testete, wurden 2-3 mal Werte von ein paar Sekunden angezeigt. Grösstenteils aber dennoch Werte unter 0.1 Sekunden, obwohl ich die Maus nicht mal bewegte. Die Regler sind nicht miteinander verknüpft. Zwar werden sie transparent angezeigt zu Beginn aber ich habe keinen bestimmten Wert festgelegt, bei dem sie zu Beginn sein sollen. Die Messung unter 0.1 Sekunden tritt auch auf, wenn der Regler zu Beginn nicht angezeigt ist. Falls Sie herausfinden woran das liegt, würde mich das interessieren. Da ich inzwischen die Reaktionszeit vom laden der Seite bis zur letzten Bewegung des Reglers messen kann, ist es für meine Untersuchung jedoch nicht direkt relevant; auch wenn es natürlich gut ist die Messung exakt zu verstehen.
+1 vote
by SoSci Survey (282k points)

Der Vollständigkeit halber ... das Problem, dass der LatencyTimer den ersten Klick auf den Schieberegler nicht korrekt erfassen konnte, hing (wie vermutet) mit dem Mechanismus bei der Initialisierung zusammen. Allerdings trat das Problem nur in Chrome konsistent auf - in Firefox nur gelegentlich.

Mittlerweile ist auf www.soscisurvey.de ein Update eingespielt, welches die korrekte Messung des ersten Klicks gewährleistet.

by s136909 (120 points)
Perfekt, jetzt klappt es. 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

...