Qualtrics同区块调用Survey Flow生成的嵌入式变量问题
Qualtrics嵌入式变量同页面调用空白问题解决方案
核心问题拆解
- 嵌入式变量设置后,同页面管道文本调用显示空白,下一页面正常——本质是管道文本渲染时机与JS执行时机不匹配
- 针对QID110/QID111的判断代码未生效,导致嵌入式数据
test为空,管道调用无内容
问题原因
- 管道渲染时机限制:Qualtrics的管道变量
${e://Field/test}在页面初始加载时就完成解析渲染,而JS设置嵌入式数据是在页面加载后执行,此时管道文本已生成,无法自动同步更新。 - 选项值判断错误:
${q://QID110/ChoiceGroup/SelectedChoices}获取的是选项的后台值(Value),而非前端显示的文本(Text)。若你的选项显示"Yes"/"No"但后台值设为1/0或其他值,判断条件会不成立,导致ans为空字符串。
修正方案
1. 修正判断逻辑与代码执行时机
将以下代码放在QID110/QID111所在页面的页面JavaScript(页面设置→高级→页面JavaScript)中:
Qualtrics.SurveyEngine.addOnload(function() { this.waitForPageLoad(function() { var ans = ""; // 获取选项选中值(替换为你实际的选项Value,比如1/0或Yes/No) var qid110 = "${q://QID110/ChoiceGroup/SelectedChoices}"; var qid111 = "${q://QID111/ChoiceGroup/SelectedChoices}"; // 根据实际选项值调整判断条件 if (qid110 === "Yes" && qid111 === "No") { ans = "a"; } else if (qid110 === "No" && qid111 === "Yes") { ans = "b"; } else if (qid110 === "Yes" && qid111 === "Yes") { ans = "c"; } // 设置嵌入式数据 Qualtrics.SurveyEngine.setEmbeddedData("test", ans); // 手动更新同页面的管道文本内容 var targetElements = document.querySelectorAll('span:contains("${e://Field/test}")'); targetElements.forEach(el => { el.textContent = el.textContent.replace("${e://Field/test}", ans); }); }); });
- 注意:提前确认QID110/QID111的选项Value,若不是"Yes"/"No",需替换成对应值(比如1/0)。
2. 关键说明
- 下一页面调用
${e://Field/test}无需额外处理,因为页面加载时嵌入式数据已存在,管道文本会正常渲染。 - 若仅需在下一页面使用该变量,可去掉代码中手动更新DOM的部分,仅保留嵌入式数据设置逻辑。
内容的提问来源于stack exchange,提问作者Roberto Degado
相关产品推荐
相关产品推荐

