使用Javascript for Qualtrics矩阵表显示逻辑

时间:2016-12-12 23:22:44

标签: javascript qualtrics

我想使用Javascript在Qualtrics中的单选矩阵表问题中为各行设置显示逻辑。我过去总是使用通常的点击方法完成此操作,但我经常有100多行来执行此操作,并且可以节省大量时间来以编程方式执行此操作。

我已尝试将以下内容插入“添加JavaScript”,以解决我正在尝试将显示逻辑添加到的问题:

Qualtrics.SurveyEngine.addOnload(function()
{
    /*Set display logic*/
    if ('${q://QID2/SelectedAnswerRecode/1}' < 3)  {'${q://QID3/ChoiceDescription/1}'.style.visibility='hidden';}
    if ('${q://QID2/SelectedAnswerRecode/2}' < 3)  {'${q://QID3/ChoiceDescription/2}'.style.visibility='hidden';}
});

这个想法是,在矩阵表QID3的第1行出现时,需要在QID2的第1行(也是单选矩阵表)中具有至少3的值的答案,依此类推。实际上,看起来没有响应 - 即使QID2的相应行中的选定值是&lt;也不显示QID3中的行。 3。

我还尝试style.display='none'而不是style.visibility='hidden'但没有成功。我对Javascript的体验有限,所以我怀疑它是某种语法问题。

2 个答案:

答案 0 :(得分:2)

问题确实在于您的语法。你需要隐藏一个html元素和&#39; $ {q:// QID3 / ChoiceDescription / 1}&#39;不是html元素(它是标签的innerHTML)。即使它是一个html元素,语法也是错误的(它不会出现在引号中)。

最好尽可能使用prototypejs,所以如果元素被命名为&#39; element&#39;命令是:

element.hide();

要找到要隐藏的正确元素,您需要通过元素ID或元素标记,类和属性的某种组合来识别和查找它们。它可以使用选择描述来完成,但它需要更多的代码并且不会非常有效。

答案 1 :(得分:1)

使用浏览器中的Inspect Element和预览模式下的测量,找到显示逻辑将出现的矩阵的行标题的元素ID。 .up().hide()也将抓住行的其余部分。由于&#39;〜&#39;在ID名称;否则我得到一个&#34;意外的令牌〜&#34;尝试保存时出错。感谢T. Gibbons指出我正确的方向。

Qualtrics.SurveyEngine.addOnload(function()
{
    /*Set display logic*/
    if ('${q://QID2/SelectedAnswerRecode/1}' < 3)  {$('header~QID3~1').up().hide();}
    if ('${q://QID2/SelectedAnswerRecode/2}' < 3)  {$('header~QID3~2').up().hide();}
    if ('${q://QID2/SelectedAnswerRecode/3}' < 3)  {$('header~QID3~3').up().hide();}
    if ('${q://QID2/SelectedAnswerRecode/4}' < 3)  {$('header~QID3~4').up().hide();}
    if ('${q://QID2/SelectedAnswerRecode/5}' < 3)  {$('header~QID3~5').up().hide();}
});

根据需要复制/粘贴/编辑。

更新

看起来事情可能随着更新而改变,但是虽然这可以解决问题本身,但这可能会混淆后续问题的逻辑。请格外小心!