如何解决Qualtrics 使用 JavaScript 显示基于先前答案的问题
我对 JavaScript 还很陌生,并试图找到解决我的问题的方法,但没有成功。
我有一个问题 (Q4),只有在 Q3 的答案为“是”时才应显示该问题。如果我使用显示逻辑,Qualtrics 会将 Q4 放在单独的页面上,因为它是一个“幻灯片”问题(In Page 选项不可用)。由于我希望 Q4 与 Q3 出现在同一页面上,因此我想我需要改用 JavaScript 选项。
我如何根据 Q3 的答案来判断 Q4?请参阅我在下面所做的(不成功)尝试的示例。通过使用 .hide() 和 .show() 我可以隐藏和显示问题,但 if("${QID3" == 1) 部分不起作用。
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page loads*/
// Hide Q as soon as page loads
$(this.questionId).hide();
// Show Q if condition is met
if("${QID3" == 1)
this.questionID().show();
});
更新 1: 所以我查找了事件处理程序并想出了这个,但仍然不起作用:
("$[id='QR~QID4]").hide();
this.questionclick = function(event,element) {
var selectedChoice = this.getSelectedChoices()
console.log(selectedChoice)
if (selectedChoice == "1") {
("$[id='QR~QID4]").show();
}
更新 2:
我现在差不多解决了。我有错误的问题 ID(但在浏览器上右键单击并单击“检查元素”以找到它)并四处搜索以找到引用另一个问题的正确方法。
设法解决了!我有错误的问题 ID(通过在浏览器中右键单击并选择“检查元素”来修复),并在周围搜索以根据其 ID 找到正确的问题调用。
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page is unloaded*/
// hide next question from start
jQuery("#QID10").hide();
// when current question is clicked
this.questionclick = function(event,element) {
// create variabe with clicked answer and check
var selectedChoice = this.getSelectedChoices()
console.log(selectedChoice)
// show next question if condition is met
if (selectedChoice == "1") {
jQuery("#QID10").show();}
// in case answer is switched,hide again
else{
jQuery("#QID10").hide();
}}
});
此解决方案按预期隐藏和显示问题 - 但是,它弄乱了滑块,因此不再可能回答问题(请参见下图,滑块无法拖动并且“栏”有消失了)。更奇怪的是,如果我放大/缩小页面,滑块会重新出现,并且即使我缩放回默认值也保持可见/可点击 - 所以我猜滑块的显示方式发生了一些事情,但我不知道如何解决它。
有人知道为什么会发生这种情况以及如何解决吗?
解决方法
"${QID3" 不是有效的管道。即使是这样,您也无法通过管道从同一页面上的问题中获得答案,因为管道在页面发送到浏览器之前已在服务器上解析。
您应该将脚本附加到 Q3,遍历页面以查找和隐藏 Q4,并添加事件处理程序以在回答 Q3 时显示 Q4。
,设法解决了!添加了将滑块固定到位的问题类别。
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page is unloaded*/
// hide next question from start
jQuery("#QID10").hide('.slider');
// when current question is clicked
this.questionclick = function(event,element) {
// create variabe with clicked answer and check
var selectedChoice = this.getSelectedChoices()
console.log(selectedChoice)
// show next question if condition is met
if (selectedChoice == "1") {
jQuery("#QID10").show('.slider');
}
// in case answer is switched,hide again
else {
jQuery("#QID10").hide('.slider');
}}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。