将 Javascript 与嵌入的 Qualtrics 变量一起使用
Using Javascript with embedded Qualtrics variables
我正在使用 Qualtrics 收集与行为经济学相关的实验数据。
我需要向受访者提供预算,然后在他们花费预算的整个调查过程中更新预算。
我已经编写了一个玩具示例来尝试在此处获得 javascript。他们在问题中花费预算后,我无法更新预算。
这里是问题和基础 javascript。 谁能指出我哪里出错了?
第 0 步:我在调查开始时将嵌入数据字段“预算”设置为 100 美元。
第一步:我显示第一页。
*Q1:您的预算是 ${e://Field/Budget} 这显示正确。
*Q2:要花多少钱? (打开文本字段,验证为数字。)
Javascript:
{
});
Qualtrics.SurveyEngine.addOnReady(function()
{
});
Qualtrics.SurveyEngine.addOnPageSubmit(function(type)
{
if(type == "next")
{
var prevbudget = Qualtrics.SurveyEngine.getEmbeddedData("Budget");
var prevbudget = parseInt(prevbudget);
console.log(prevbudget);
//var temp = Qualtrics.SurveyEngine.getTextValue("QID2"); //creates an error
var temp = "${q://QID2/ChoiceTextEntryValue}"
console.log(temp) //null
var temp = parseInt(temp)
var budget = prevbudget-temp;
Qualtrics.SurveyEngine.setEmbeddedData('Budget', budget);
}
});
Qualtrics.SurveyEngine.addOnUnload(function()
{
});
第 2 步:我显示包含更新信息的下一页。
*Q3:您的预算是 ${e://Field/Budget}。 不显示
您之前花费了 ${q://QID2/ChoiceTextEntryValue}。 正确显示
*Q4:要花多少钱? (打开文本字段,验证为数字。)
...理想情况下,该过程会继续询问支出和显示预算的更多问题。
在我看来,我对 Qualtrics API 或 javascript 的理解有问题。有什么想法吗?
几件事:
- 在将页面发送到浏览器之前解析管道。因此,您无法通过管道从当前页面传递值。
- 您的预算必须是一个数字。在前面添加一个'$'使其成为一个字符串。
更新代码(假设预算是一个数字,文本输入是一个数字):
Qualtrics.SurveyEngine.addOnPageSubmit(function(type) {
if(type == "next") {
var prevbudget = parseInt("${e://Field/Budget}");
var temp = parseInt(jQuery("#"+this.questionId+" .InputText").val());
var budget = prevbudget-temp;
Qualtrics.SurveyEngine.setEmbeddedData('Budget', budget);
}
});
我正在使用 Qualtrics 收集与行为经济学相关的实验数据。
我需要向受访者提供预算,然后在他们花费预算的整个调查过程中更新预算。
我已经编写了一个玩具示例来尝试在此处获得 javascript。他们在问题中花费预算后,我无法更新预算。
这里是问题和基础 javascript。 谁能指出我哪里出错了?
第 0 步:我在调查开始时将嵌入数据字段“预算”设置为 100 美元。
第一步:我显示第一页。
*Q1:您的预算是 ${e://Field/Budget} 这显示正确。
*Q2:要花多少钱? (打开文本字段,验证为数字。)
Javascript:
{
});
Qualtrics.SurveyEngine.addOnReady(function()
{
});
Qualtrics.SurveyEngine.addOnPageSubmit(function(type)
{
if(type == "next")
{
var prevbudget = Qualtrics.SurveyEngine.getEmbeddedData("Budget");
var prevbudget = parseInt(prevbudget);
console.log(prevbudget);
//var temp = Qualtrics.SurveyEngine.getTextValue("QID2"); //creates an error
var temp = "${q://QID2/ChoiceTextEntryValue}"
console.log(temp) //null
var temp = parseInt(temp)
var budget = prevbudget-temp;
Qualtrics.SurveyEngine.setEmbeddedData('Budget', budget);
}
});
Qualtrics.SurveyEngine.addOnUnload(function()
{
});
第 2 步:我显示包含更新信息的下一页。
*Q3:您的预算是 ${e://Field/Budget}。 不显示
您之前花费了 ${q://QID2/ChoiceTextEntryValue}。 正确显示
*Q4:要花多少钱? (打开文本字段,验证为数字。)
...理想情况下,该过程会继续询问支出和显示预算的更多问题。
在我看来,我对 Qualtrics API 或 javascript 的理解有问题。有什么想法吗?
几件事:
- 在将页面发送到浏览器之前解析管道。因此,您无法通过管道从当前页面传递值。
- 您的预算必须是一个数字。在前面添加一个'$'使其成为一个字符串。
更新代码(假设预算是一个数字,文本输入是一个数字):
Qualtrics.SurveyEngine.addOnPageSubmit(function(type) {
if(type == "next") {
var prevbudget = parseInt("${e://Field/Budget}");
var temp = parseInt(jQuery("#"+this.questionId+" .InputText").val());
var budget = prevbudget-temp;
Qualtrics.SurveyEngine.setEmbeddedData('Budget', budget);
}
});