Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript实现Qualtrics矩阵表显示逻辑_Javascript_Qualtrics - Fatal编程技术网

使用Javascript实现Qualtrics矩阵表显示逻辑

使用Javascript实现Qualtrics矩阵表显示逻辑,javascript,qualtrics,Javascript,Qualtrics,我想使用Javascript为Qualtrics中的单选矩阵表问题中的各行设置显示逻辑。我过去一直使用通常的点击方法来完成这项工作,但我通常有100多行要完成这项工作,并且能够以编程方式完成这项工作将节省大量时间 对于我试图添加显示逻辑的问题,我尝试在“添加JavaScript”中插入以下内容: Qualtrics.SurveyEngine.addOnload(function() { /*Set display logic*/ if ('${q://QID2/SelectedA

我想使用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';}
});
Qualtrics.SurveyEngine.addOnload(函数()
{
/*设置显示逻辑*/
如果(${q://QID2/SelectedAnswerRecode/1}'<3){${q://QID3/ChoiceDescription/1}.style.visibility='hidden';}
如果(${q://QID2/SelectedAnswerRecode/2}'<3){${q://QID3/ChoiceDescription/2}.style.visibility='hidden';}
});
其思想是,要显示矩阵表QID3的第1行,需要在QID2的第1行(也是单选矩阵表)中至少有3个值的答案,依此类推。事实上,is显示为无响应-即使QID2相应行中的选定值小于3,QID3中的行仍会显示


我还尝试了
style.display='none'
而不是
style.visibility='hidden'
,但没有成功。我使用Javascript的经验有限,因此我怀疑这是某种语法问题。

问题确实出在您的语法上。您需要隐藏html元素,而“${q://QID3/ChoiceDescription/1}”不是html元素(它是标签的内部html)。即使它是一个html元素,语法也是错误的(它不会在引号中)

如果可能,最好使用prototypejs,因此如果元素名为“element”,则命令将为:

element.hide();

要找到要隐藏的正确元素,需要通过元素id或元素标记、类和属性的某种组合来识别和查找它们。可以使用“选项描述”来完成,但这需要更多的代码,效率也不是很高。

在浏览器中使用“检查元素”,在预览模式下进行调查,以查找矩阵行标题的元素ID,其中将出现显示逻辑
.up().hide()
也将抓取行的其余部分。由于ID名称中的“~”,因此需要在ID周围加引号;否则,在尝试保存时会出现“意外标记~”错误。感谢T.吉本斯为我指明了正确的方向

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();}
});
Qualtrics.SurveyEngine.addOnload(函数()
{
/*设置显示逻辑*/
如果(${q://QID2/SelectedAnswerRecode/1}'<3){$('header~QID3~1').up().hide();}
如果(${q://QID2/SelectedAnswerRecode/2}'<3){$('header~QID3~2').up().hide();}
如果(${q://QID2/SelectedAnswerRecode/3}'<3){$('header~QID3~3').up().hide();}
如果(${q://QID2/SelectedAnswerRecode/4}'<3){$('header~QID3~4').up().hide();}
如果(${q://QID2/SelectedAnswerRecode/5}'<3){$('header~QID3~5').up().hide();}
});
根据需要复制/粘贴/编辑

更新
看起来,随着更新,情况可能发生了变化,但尽管这对问题本身有效,但这可能会扰乱后续问题的逻辑。要格外小心

Qualtrics加载并使用prototypejs,因此在Qualtrics中始终可以使用prototypejs…您不必做任何事情。您不想隐藏整行而不是单个单元格和无线电输入吗?Try:$('header~QID3~1').up().hide();代替所有的显示=无行。@T.Gibbons是的,工作非常好!我将修改答案以反映这一点。