在Qualtrics问卷中用JavaScript获取单选题选中选项的显示顺序
解决Qualtrics单选选项显示顺序对应嵌入式数据设置问题
你的问题出在原代码通过element.id.split('~')[2]获取的是选项的固有编号(即问卷后台设置选项时的顺序),而非随机后在页面上的显示顺序。要实现根据显示顺序设置Output,需要获取选中选项在当前页面的位置索引,具体代码如下:
this.questionclick = function(event, element) { if (element.type === 'radio') { // 获取当前问题下所有选项的容器,按页面显示顺序排列 const choiceContainers = this.getQuestionContainer().querySelectorAll('.Choice'); let displayOrder = 0; // 遍历容器,匹配选中的选项并确定其显示顺序 choiceContainers.forEach((container, index) => { const radioInput = container.querySelector('input[type="radio"]'); if (radioInput.id === element.id) { // 显示顺序从1开始计数,所以index加1 displayOrder = index + 1; } }); // 成功获取顺序后设置嵌入式数据 if (displayOrder > 0) { Qualtrics.SurveyEngine.setEmbeddedData("Output", displayOrder.toString()); } } };
关键说明:
this.getQuestionContainer():定位到当前问题的容器,避免干扰其他问题的选项.querySelectorAll('.Choice'):抓取Qualtrics默认的选项容器元素,这些元素的顺序就是页面上的显示顺序- 遍历过程通过radio的ID匹配选中项,获取其在显示列表中的位置(索引从0开始,所以加1转为1起始的顺序号)
注意事项:
- 如果你的问卷使用了自定义主题,选项容器的类名可能不是
.Choice,可以通过浏览器开发者工具(F12)查看选项元素的类名,替换代码中的选择器 - 代码要放在对应单选题的「JavaScript」编辑区域内,不要放在全局脚本中
- 测试时可以添加
console.log(displayOrder)查看获取到的顺序是否正确
内容的提问来源于stack exchange,提问作者user20380762
相关产品推荐
相关产品推荐

