2016-02-25 42 views
0

我是Qualtrics和JavaScript的新手。由于特殊原因,我正在使用“热点”问题。我希望能够统计和显示参与者点击的热点地区的数量。所以我只需要运行一些简单的JavaScript来计算已被点击的区域。我尝试了许多事情,但没有成功。基本上,我创建了一个嵌入式数据元素,称之为“NumberofChoices”,我想在问题上运行一些JavaScript来计算选择的数量,并用正确的值替换这个嵌入式数据元素。如何统计Qualtrics上选定答案的数量?

有人建议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的值。另外,我仍然需要添加模数命令。我不确定上述的=函数(事件,元素)。我将它保留为(事件,元素),还是将其替换为实际的点击事件和元素?

如果我这样做,这是行不通的

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

你选择了一个非常困难的任务开始。问题在于热点地区在浏览器视为外部对象的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... 
+0

非常感谢你的帮助!我问这个问题后,我开始思考这条线。您是否知道Qualtrics是否在不向主题展示的问题中运行JavaScript?例如,如果下一个问题附带了显示条件,JavaScript是否会针对该问题运行,并且只有在满足显示条件时才更新嵌入数据?或者它会运行,不管是什么? – KNielsen

+0

你恰巧有一个关于如何计算使用管道文本框的建议吗?我发现唯一的管道文本选项是使用Selected Choices for Answer(将选择的选项分解为“打开”变量的名称)。但我仍然需要数这些。所以我尝试这样的事情,但没有运气\\ var Q1boxes =“$ {q:// QID5/ChoiceGroup/SelectedChoicesForAnswer/2}”; \t var Q1boxes = parseInt(Q1boxes); \t var Q1boxesCount = Q1boxes.length; \尽管这在技术上不正确,但我需要去努力。 – KNielsen

+0

对不起...我不熟悉这个界面! – KNielsen