【问题标题】:Randomizing masked choices in Qualtrics with Javascript使用 Javascript 随机化 Qualtrics 中的屏蔽选择
【发布时间】:2017-05-17 18:28:34
【问题描述】:

我正在编写一项 Qualtrics 调查,其中将向几个不同的受访者流展示不同的属性子集,以便在矩阵问题中进行评分。

属性和问题都有很多,因此为了避免花费数天时间点击答案级别的显示逻辑,我改编了来自@T 的答案。 Gibbons (Use Javascript for Qualtrics matrix table display logic) 并使用 Javascript 通过以下代码屏蔽子集。

var quest = this.questionId;
var choices = this.getChoices();

var survey_stream = "${e://Field/E8}";
var stream;

var stream1 = ["1", "2", "3", "4", "5", "6"];
var stream2 = ["2", "3", "4", "7", "8", "9"];
var stream3 = ["1", "2", "3", "4", "5", "6"];

if (survey_stream=="1") {stream=stream1;}
if (survey_stream=="2") {stream=stream2;}
if (survey_stream=="3") {stream=stream3;}

var idName;
var hiddenChoices;

hiddenChoices = choices.filter(function(x) {
    return !stream.includes(x);
});

hiddenChoices.each(function(item) {
  idName = "header~"+quest+"~"+item;
  $(idName).up().hide();
});

理想情况下,显示的剩余项目也将是随机的,但是为问题选择标准随机化选项会通过返回正确数量的答案选项,但返回错误的子集来“破坏”上面的代码。我的猜测是它在屏蔽脚本运行之前随机化了选择的顺序,所以在应用我的流的位置引用之前选择已经乱序了。

由于我在 Javascript 方面的经验非常有限,并且 Qualtrics 文档在这方面非常糟糕,是否有任何建议可以帮助我调整我的代码以包含我的选择子集的正确随机化?

【问题讨论】:

  • 需要注意代码的一个小更新,Internet Explorer 不支持 array.includes(),因此除非您复制/粘贴此处找到的 polyfill 代码link,否则屏蔽将不起作用。跨度>

标签: javascript random qualtrics


【解决方案1】:

对于你的 hiddenChoices.each 函数试试这个:

hiddenChoices.each(function(item) {
  idName = "QR~"+quest+"~"+item+"~1";
  $(idName).up('tr.ChoiceRow').hide();
});

【讨论】:

  • 关闭,但不完全。即使启用了随机化,它也会保留正确的选项,但顺序保持原样。
  • 我不明白你指的是什么顺序。我认为目标是随机化并保留正确的选项。还有什么?
  • 对不起,我想我不清楚。如果要显示的选项是 1、2、3,并且我按照您的建议更改代码,同时选择“随机化所有选项”,则选项始终以原始顺序 1、2、3 显示,没有随机化。
  • JavaScript 只是隐藏行,而不是移动它们。所以,问题在于随机化,而不是脚本。我刚刚尝试了随机矩阵上的脚本,它工作正常。
  • 太奇怪了,我昨天试了几次,有问题,但就像你今天早上说的那样工作正常。很抱歉造成混乱,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2017-12-27
相关资源
最近更新 更多