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