微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qualtrics 使用 JavaScript 显示基于先前答案的问题

如何解决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();
        }}
    
});

解决方案按预期隐藏和显示问题 - 但是,它弄乱了滑块,因此不再可能回答问题(请参见下图,滑块无法拖动并且“栏”有消失了)。更奇怪的是,如果我放大/缩小页面,滑块会重新出现,并且即使我缩放回认值也保持可见/可点击 - 所以我猜滑块的显示方式发生了一些事情,但我不知道如何解决它。

screenshot of how it looks

有人知道为什么会发生这种情况以及如何解决吗?

解决方法

"${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 举报,一经查实,本站将立刻删除。