Qualtrics 使用 JavaScript 显示基于先前答案的问题
Qualtrics show question based on previous answer using JavaScript
我是 JavaScript 的新手,我曾尝试找到解决问题的方法,但没有成功。
我有一个问题 (Q4),只有当 Q3 的答案为“是”时才应显示该问题。如果我使用显示逻辑,Qualtrics 会将 Q4 放在单独的页面上,因为它是一个“幻灯片”问题(In Page 选项不可用)。因为我希望第 4 季度与第 3 季度在同一页面上弹出,所以我想我需要使用 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();
}}
});
此解决方案按预期隐藏和显示问题 - 但是,它弄乱了滑块,因此无法再回答问题(见下图,无法拖动滑块和“栏” “消失了)。更奇怪的是,如果我在页面上缩放 in/out,滑块会重新出现,并保持 visible/clickable 即使我缩放回默认值 - 所以我猜滑块的显示方式发生了一些变化,但我有不知道怎么解决。
screenshot of how it looks
有人知道为什么会发生这种情况以及如何解决吗?
"${QID3" 不是有效的管道。即使是这样,您也无法在同一页面上通过管道传输问题的答案,因为在将页面发送到浏览器之前管道已在服务器上解析。
您应该将脚本附加到 Q3,遍历页面以找到并隐藏 Q4,并添加一个事件处理程序以在回答 Q3 时显示 Q4。
设法解决了!添加了 class 问题,使滑块保持原位。
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');
}}
});
我是 JavaScript 的新手,我曾尝试找到解决问题的方法,但没有成功。
我有一个问题 (Q4),只有当 Q3 的答案为“是”时才应显示该问题。如果我使用显示逻辑,Qualtrics 会将 Q4 放在单独的页面上,因为它是一个“幻灯片”问题(In Page 选项不可用)。因为我希望第 4 季度与第 3 季度在同一页面上弹出,所以我想我需要使用 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();
}}
});
此解决方案按预期隐藏和显示问题 - 但是,它弄乱了滑块,因此无法再回答问题(见下图,无法拖动滑块和“栏” “消失了)。更奇怪的是,如果我在页面上缩放 in/out,滑块会重新出现,并保持 visible/clickable 即使我缩放回默认值 - 所以我猜滑块的显示方式发生了一些变化,但我有不知道怎么解决。
screenshot of how it looks
有人知道为什么会发生这种情况以及如何解决吗?
"${QID3" 不是有效的管道。即使是这样,您也无法在同一页面上通过管道传输问题的答案,因为在将页面发送到浏览器之前管道已在服务器上解析。
您应该将脚本附加到 Q3,遍历页面以找到并隐藏 Q4,并添加一个事件处理程序以在回答 Q3 时显示 Q4。
设法解决了!添加了 class 问题,使滑块保持原位。
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');
}}
});