如何计算Qualtrics上所选答案的数量?

时间:2016-02-25 15:46:23

标签: javascript jquery survey qualtrics

我是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函数不会更新变量。 (我确实有\ _脚本,标题中没有冲突代码,所以这不是问题)。

我也试过像

这样的东西
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,所以我不知道如何解决这个问题!我很感激能得到的任何帮助。

1 个答案:

答案 0 :(得分:1)

你选择了一项非常困难的任务。问题是热点区域位于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...