2016-11-01 3 views
1

Ich bin Forschung mit einem Experiment mit Qualics und leider bin ich völlig neu in der Codierung. In meinem Experiment sollte ein Fragenblock nach einer bestimmten Zeit (in diesem Fall 50 Sekunden) beendet werden. Bisher habe ich eine Lösung verwendet (die ich hier gefunden habe: https://research-it.wharton.upenn.edu/uncategorized/qualtrics-loop-merge-tips/), die mit einer leeren eingebetteten Variablen "test_time", Anzeigelogik und dem folgenden JavaScript-Code, der auf jede Seite des Blocks kopiert wurde:Qualtrics & Javascript Präzise Timer mit Zeitaufwand auf einer Seite

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    var elapsed = Date.now() - Number("${e://Field/test_time}"); 
    if (elapsed >= 50000){ 
    Qualtrics.SurveyEngine.setEmbeddedData("test_time", 0); 
} 
}); 

In den exportierten Daten, wenn ich Informationen aus Timing-Fragen zusammenfasse, die ich eingeschlossen habe, sehe ich, dass Leute extrem unterschiedliche Zeit haben, die sie tatsächlich für die Fragen des Blocks ausgeben können (von 30 bis fast 50 Sekunden). Ich schätze das liegt daran, dass das Skript die Zeit der Uhr verwendet, unabhängig von der Verzögerung, die durch eine schlechte Internetverbindung oder einen langsamen Browser verursacht wird.

Aber für mein Projekt ist es wichtig, dass die Menschen tatsächlich die gleiche Zeit für die Aufgabe haben. Ich vermute, ich könnte die Informationen der Timing-Fragen verwenden, aber irgendwie kann ich nicht auf sie in Javascript zugreifen. Eine weitere Idee ist es, den Unterschied zwischen der erscheinenden Seite und dem Klick auf die nächste Schaltfläche zu erfassen.

Ich schätze jede Ihrer Ideen und Eingaben!

Antwort

0

Verwenden Sie die integrierte eingebettete Variable Q_TotalDuration, bei der es sich um die verstrichene Vermessungszeit in Sekunden handelt. Stellen Sie die Startzeit des Blocks in der Umfrage fließen unmittelbar vor dem Block:

startBlock = ${e://Field/Q_TotalDuration} 

Dann wird Ihr JavaScript wird:

var elapsed = parseInt("${e://Field/Q_TotalDuration}") - parseInt("${e://Field/startBlock}"); 
if(elapsed >= 50) { 
    //do something here 
} 

Ich verstehe nicht, was passiert, wenn die Frist erreicht ist und time_test wird in Ihrem ursprünglichen Code auf Null gesetzt. Es hätte keine Auswirkungen auf die aktuelle Seite. Es scheint, dass Sie eine Timeout-Funktion einrichten sollten, um auf die Schaltfläche Weiter zu klicken, wenn der Zeitgrenzwert erreicht ist.

Verwandte Themen