You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Qualtrics中JavaScript实现Vignette随机分配遇问题

Qualtrics Vignette随机分配问题排查与解决

问题背景

作为Qualtrics JS新手,需将被试随机分配至16个(后续扩展至500+)vignette,计划通过嵌入数据字段指定vignette变量名,但遇到两个问题:

  1. 文本/图形问题的JS窗口运行预览显示undefined
  2. 富文本编辑器HTML视图中输入代码无法保存

原代码:

Qualtrics.SurveyEngine.addOnload(function() {
  // Get the value of the selected variable from embedded data
  var selectedVariable = "${e://Field/SelectedVariable}";

  // Define the vignettes with their corresponding text
  var vignettes = {
    "aAA1BB1AB1BA1": "Text for vignette 1...",
    "aAA1BB1AB1BA0": "Text for vignette 2...",
    // Add more vignettes as needed
  };

  // Get the text for the selected vignette based on the selected variable
  var selectedVignetteText = vignettes[selectedVariable];

  // Set the text of the question to display the selected vignette
  this.getQuestionTextContainer().innerHTML = selectedVignetteText;
});

问题1:预览显示undefined的解决

核心原因

  • 直接使用${e://Field/SelectedVariable}是错误的:Qualtrics模板语法不会在JS代码中自动解析,selectedVariable实际拿到的是字符串"${e://Field/SelectedVariable}"而非嵌入数据的真实值
  • 嵌入数据字段SelectedVariable可能未正确赋值、字段名拼写错误(区分大小写)

修复步骤

  • 改用官方API获取嵌入数据:替换原获取变量的代码为:
    var selectedVariable = Qualtrics.SurveyEngine.getEmbeddedData("SelectedVariable");
    
  • 验证嵌入数据赋值:确保调查流程中已提前为SelectedVariable赋值(比如通过随机逻辑生成变量名并存入嵌入数据),字段名完全匹配
  • 添加容错处理:避免变量不存在时显示undefined:
    var selectedVignetteText = vignettes[selectedVariable] || "加载失败,请重试";
    

问题2:富文本编辑器无法保存代码的解决

原因

Qualtrics富文本编辑器会自动清理内嵌JavaScript代码,不支持在HTML视图中保存JS逻辑

解决

所有JS代码必须放在对应问题的专属JavaScript编辑器中(点击问题设置的「JavaScript」按钮打开),不要在富文本HTML视图中添加JS

优化后的完整代码

Qualtrics.SurveyEngine.addOnload(function() {
  // 正确获取嵌入数据字段值
  var selectedVariable = Qualtrics.SurveyEngine.getEmbeddedData("SelectedVariable");

  // Vignette映射表
  var vignettes = {
    "aAA1BB1AB1BA1": "Text for vignette 1...",
    "aAA1BB1AB1BA0": "Text for vignette 2...",
    // 批量添加更多vignette
  };

  // 获取对应文本,添加默认容错
  var selectedVignetteText = vignettes[selectedVariable] || "加载失败,请联系管理员";

  // 更新问题显示文本
  this.getQuestionTextContainer().innerHTML = selectedVignetteText;
});

500+ Vignette扩展建议

  • 不要在JS中硬编码大量vignette:将内容存入Qualtrics嵌入数据或问题库,通过批量导入维护,再动态拉取
  • 随机分配逻辑前置:在调查入口Block中通过随机数生成变量名,存入SelectedVariable嵌入数据,确保分配唯一性

内容的提问来源于stack exchange,提问作者Julia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:50:59