使用javascript在Qualtrics中记录答案随机化

时间:2015-01-11 12:50:59

标签: javascript qualtrics

我正在Qualtrics进行调查。这项调查有一个重复的问题,有六个答案选择。六个选项是随机的(以标准方式,没有javascript)。问题是使用循环和合并重复,这很有效,因为它是一遍又一遍的相同问题结构(36次),但我可以使用字段函数来调整每次迭代的问题和答案。

然而,我遇到的一个问题是Qualtrics没有(作为标准)支持在结果中记录随机化数据 - 即它如何在每次迭代中随机化六个答案选择。当我在下载结果时使用“导出随机查看订单数据”功能时,它仅显示上次询问问题时的答案顺序。所以看起来这是一个在每次迭代后被覆盖的值。

所以现在我想通过javascript记录每次迭代的答案顺序。但是,我还没有找到一个给出顺序答案的函数(随机化后)。我咨询了Qualtrics javascript API,发现了一些看起来很有希望的函数,比如getChoices(),但是当我尝试这个时,我所得到的只是没有随机化的答案顺序(即只有1,2,3,4, 5,6)。

是否有人知道使用javascript或其他方式记录每次迭代的随机选择顺序的方法?

3 个答案:

答案 0 :(得分:1)

I found以不同的方式记录循环并合并随机化顺序。

  1. 在调查流程中创建嵌入数据字段。在这里,我们将记录随机化顺序。我将调用字段rand_order。
  2. 使用唯一编号添加循环和合并字段以标识每个循环(例如,1,2,3,4,5,...,n)。
  3. 然后将下一个javascript添加到循环块的任何页面。

    //*Place Your Javascript Below This Line*/
       var questionText = "${lm://Field/1}"; // "${lm://Field/1}" will actually evaluate to  
       //whatever is Field 1 in the current Loop & Merge loop.
       // You can do this with embedded data too, as seen in the next line
       var order = "${e://Field/rand_order}" + "|" + questionText; // gets the value of the embedded data
       // field "rand_order", concatenates the current loop's identifier to it, 
      //and stores that as a variable
       Qualtrics.SurveyEngine.setEmbeddedData('rand_order', order); // updates the  
       //embeddeddata field "rand_order" to be our order variable, which has the current loop's 
       //identifier attached, effectively constructing a string of numbers representing the order
    

    您将获得一个名为" rand_order"的列。填写" 1 | 5 | 23 | 2 ... | n"。您可以更改分隔符,使其与用于处理数据的任何脚本更加兼容。

答案 1 :(得分:1)

Qualtrics已经为您记录了此信息。这只是在下载数据时明确要求的问题。 this page上的数字5提供了更多信息,但我将重述重要内容:

  1. 在“数据和分析”选项卡中,单击“导出和导入”,然后单击“导出数据”。
  2. 在“下载数据表”窗口中,单击“更多选项”。
  3. 选中“为随机调查导出查看订单数据”框。

答案 2 :(得分:0)

我认为这里的问题是看看DOM中的选择顺序。 Qualtrics提供getChoiceContainer()方法来获取包含选项的div。这是我编写的一个片段,经过最低限度的测试:



//get the div containing the choices, then get all input child elements of that div
var choices = this.getChoiceContainer().getElementsByTagName("input");
//initialize an array for the IDs of the choices
var choiceIDs = []
//add the ID of each choice to the array
for (var i=0; i < choices.length; i++) {
	choiceIDs.push(choices[i].id);
		
}
//get the current choice order from embedded data and add this loop to it.
//Add a | to distinguish between loops.
var choiceOrder = "${e://field/choiceorder}" + choiceIDs.toString() + "|";
//set the embedded data with the new value
Qualtrics.SurveyEngine.setEmbeddedData("choiceorder", choiceOrder);
&#13;
&#13;
&#13;

一些注意事项/注意事项: 我只在带有单选按钮的基本多项选择问题上对此进行了测试。可能需要针对不同的问题类型进行调整。

我还得到了问题选择的ID。您可以很容易地修改它以获取其他信息,例如选择的标签或它对应的数值。