Qualtrics& Javascript精确定时器使用页面上的时间花费

时间:2016-11-01 10:19:58

标签: javascript qualtrics

我正在使用qualtrics进行实验研究,不幸的是我对编码完全不熟悉。在我的实验中,一段问题应该在一定时间后结束(在这种情况下为50秒)。到目前为止,我一直在使用一个解决方案(我在这里找到:https://research-it.wharton.upenn.edu/uncategorized/qualtrics-loop-merge-tips/)使用空白的嵌入变量“test_time”,显示逻辑和我复制到块的每个页面的以下javascript代码看起来相当整洁:

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

然而,在导出的数据中,当我从我所包含的计时问题中总结信息时,我发现人们实际上可以在块的问题上花费的时间变化很大(从30到差不多50秒)。我猜这是因为脚本使用时钟的时间,而不考虑因互联网连接不良或浏览器速度慢造成的延迟。

然而,对于我的项目来说,重要的是人们实际上有相同的时间完成任务。我怀疑我可以使用计时问题的信息,但不知怎的,我无法在Javascript中访问它们。另一个想法是记录出现的页面和单击下一个按钮之间的差异。

我赞赏你的任何想法和意见!

1 个答案:

答案 0 :(得分:0)

使用内置的嵌入变量Q_TotalDuration,即以秒为单位的经过的测量时间。在块之前的测量流程中设置块的开始时间:

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

然后您的JavaScript变为:

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

我不明白达到时间限制时会发生什么,并且原始代码中的time_test设置为零。它不会对当前页面产生任何影响。看起来您应该设置一个超时功能,以便在达到时间阈值时单击“下一步”按钮。