如何使用 javascript 将信息从浏览器控制台写入 qualtrics 数据文件
How to write information from browser console into qualtrics datafile using javascript
我正在尝试将信息从浏览器控制台提取到我的 qualtrics 数据文件中。下面的代码记录了第一次击键的反应时间 ('console.log(rt)')。这些反应时间记录在我的浏览器控制台中,但我想知道如何将这些数据写入我的 qualtrics 数据文件。任何想法,将不胜感激。谢谢!
Qualtrics.SurveyEngine.addOnload(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
console.log(rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});
已编辑脚本
Qualtrics.SurveyEngine.addOnReady(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
var trials ="${e://Field/ed_var}";
if(trials.length > 0) trials += ",";
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});
使用:
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', rt);
其中 ed_var 是先前已在调查流程中声明的嵌入变量。
此外,您应该将 addOnload 更改为 addOnReady。 addOnload 通常在按钮出现之前运行,当您尝试隐藏它们时可能会导致错误。
编辑:
如果您为调查流程中的所有循环创建嵌入式数据字段,那么您可以将它们的名称作为字段 2 传递到循环中,并将 ${lm://Field/2} 传递到您的 JavaScript:
var ed_var = "${lm://Field/2}";
...
Qualtrics.SurveyEngine.setEmbeddedData(ed_var, rt);
如果你想要一个包含逗号分隔的试验列表的变量,它将类似于:
var trials = "${e://Field/ed_var}";
if(trials.length > 0) trials += ",";
...
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);
经过反复试验,这个解决方案终于奏效了:
Qualtrics.SurveyEngine.addOnload(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
var imageID = "${lm://Field/2}";
var RTtime = "${e://Field/ed_var}" + "|" + imageID;
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', RTtime + rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});
我正在尝试将信息从浏览器控制台提取到我的 qualtrics 数据文件中。下面的代码记录了第一次击键的反应时间 ('console.log(rt)')。这些反应时间记录在我的浏览器控制台中,但我想知道如何将这些数据写入我的 qualtrics 数据文件。任何想法,将不胜感激。谢谢!
Qualtrics.SurveyEngine.addOnload(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
console.log(rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});
已编辑脚本
Qualtrics.SurveyEngine.addOnReady(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
var trials ="${e://Field/ed_var}";
if(trials.length > 0) trials += ",";
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});
使用:
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', rt);
其中 ed_var 是先前已在调查流程中声明的嵌入变量。
此外,您应该将 addOnload 更改为 addOnReady。 addOnload 通常在按钮出现之前运行,当您尝试隐藏它们时可能会导致错误。
编辑: 如果您为调查流程中的所有循环创建嵌入式数据字段,那么您可以将它们的名称作为字段 2 传递到循环中,并将 ${lm://Field/2} 传递到您的 JavaScript:
var ed_var = "${lm://Field/2}";
...
Qualtrics.SurveyEngine.setEmbeddedData(ed_var, rt);
如果你想要一个包含逗号分隔的试验列表的变量,它将类似于:
var trials = "${e://Field/ed_var}";
if(trials.length > 0) trials += ",";
...
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);
经过反复试验,这个解决方案终于奏效了:
Qualtrics.SurveyEngine.addOnload(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 83: // 'S' was pressed
choiceID = 1;
break;
case 68: // 'D' was pressed
choiceID = 2;
break;
}
if (choiceID) {
var day = new Date();
var trialend = day.getTime();
let rt = trialend - trialstart;
var imageID = "${lm://Field/2}";
var RTtime = "${e://Field/ed_var}" + "|" + imageID;
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', RTtime + rt);
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
}
});
});