我是Qualtrics和JavaScript的新手。出于特殊原因,我正在使用“热点”问题。我希望能够计算并显示参与者单击的热点区域的数量。因此,我只需要运行一些简单的JavaScript即可计算被点击的区域。我尝试了很多事情,但都没有成功。基本上,我已经创建了一个嵌入式数据元素,将其称为“ NumberofChoices”,并且我想对一个问题运行一些JavaScript来统计选择的数量,并用正确的值替换该嵌入式数据元素。

有人向我建议了jQuery,所以我尝试了类似的方法

Qualtrics.SurveyEngine.addOnload(function()
{

var Box1 = 0
var Box2 = 0
var Box3 = 0
var Box1Clicked = 0
var Box2Clicked = 0
var Box3Clicked = 0


$j('input[name=Q1_1]').click( function(){
Box1 = Box1 + 1
Box1Clicked = Box1 % 2 == 1
Qualtrics.SurveyEngine.setEmbeddedData("Box1", temp)
})

$j('input[name=Q1_2]').click( function(){
Box2 = Box2 + 1
Box2Clicked = Box2 % 2 == 1
Qualtrics.SurveyEngine.setEmbeddedData("Box2",temp)
})

$j('input[name=Q1_3]').click( function(){
Box3 = Box3 + 1
Box3Clicked = Box3 % 2 == 1
Qualtrics.SurveyEngine.setEmbeddedData("Box3",temp)
})


$j('#NextButton').click(function() {
   var howManyClickedQ1 = Box1Clicked + Box2Clicked + Box3Clicked
Qualtrics.SurveyEngine.setEmbeddedData("NumberofChoices",howManyClickedQ1)
   })

});


这是行不通的。它总是返回0值,所以我认为.click函数不会更新变量。 (我确实有\ script并且标头中没有冲突代码,所以这不是问题)。

我也尝试过类似

Qualtrics.SurveyEngine.addOnload(function()
{
var Box1=0
this.questionclick = function(click,Q1_1){
Box1 = 1;
Qualtrics.SurveyEngine.setEmbeddedData("NumberofChoices",Box1)
}
});


这确实起作用,但仅适用于框元素之一。如果我将其复制多次,然后尝试将它们求和,那么它只会返回值1。此外,我仍然需要添加取模命令。我不确定上面的= function(event,element)。我将其保留为(事件,元素)还是将其替换为实际的click事件和元素?

如果我这样做,那行不通

this.questionclick = function(event,element){
    if (element=='Q5_1'){Box1 = 1;}
    else if (element=='Q5_2'){Box2=1;}
    else if (element=='Q5_3'){Box3=1;}
    else if (element=='Q5_4'){Box4=1;}
    else {Box1=0;}
howManyClickedQ1 = Box1 + Box2 + Box3 + Box4 + Box5 + Box6 + Box7;
Qualtrics.SurveyEngine.setEmbeddedData("NumberofChoices",howManyClickedQ1);
}


就像我说的那样,我以前从未使用过Qualtrics,也从未使用过JavaScript,所以我不知道如何解决此问题!我将不胜感激。

最佳答案

您选择了一个非常困难的任务开始。问题在于热点区域位于svg中,浏览器将其视为外部对象。任何引用svg的脚本都必须在svg之内。您的脚本不是,实际上没有任何方法可以将脚本添加到svg。

如果您需要统计单击的区域,请在热点问题之后使用热点问题中的管道值进行处理。您可以在Web服务脚本或附加到后续问题的javascript中进行解析/计算。

编辑:基于以下评论的加法。

JavaScript的一部分,用于计算在随后的问题中检查的区域:

var count = 0;
if("${q://QID1/ChoiceGroup/SelectedAnswers/11}" == "On") count++;  //region 1
if("${q://QID1/ChoiceGroup/SelectedAnswers/12}" == "On") count++;  //region 2
// etc...

关于javascript - 如何计算定性上所选答案的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35631966/

10-12 12:41
查看更多