私は、いくつかの異なるストリームの回答者にマトリックスの質問で異なる属性のサブセットを提示するQualtrics調査をプログラミングしています。Javascriptを使用してQualtricsでマスクされた選択肢をランダム化する
多くの属性と質問がありますので、回答レベルの表示ロジックをクリックして過ごす時間を避けるために、@ Tの答えを適用しました。 Gibbons(Use Javascript for Qualtrics matrix table display logic)、Javascriptを使用して下のコードでサブセットをマスクしました。
var quest = this.questionId;
var choices = this.getChoices();
var survey_stream = "${e://Field/E8}";
var stream;
var stream1 = ["1", "2", "3", "4", "5", "6"];
var stream2 = ["2", "3", "4", "7", "8", "9"];
var stream3 = ["1", "2", "3", "4", "5", "6"];
if (survey_stream=="1") {stream=stream1;}
if (survey_stream=="2") {stream=stream2;}
if (survey_stream=="3") {stream=stream3;}
var idName;
var hiddenChoices;
hiddenChoices = choices.filter(function(x) {
return !stream.includes(x);
});
hiddenChoices.each(function(item) {
idName = "header~"+quest+"~"+item;
$(idName).up().hide();
});
理想的には、示さ残りの項目もランダム化されるだろうが、質問のための標準的なランダム化オプションを選択すると、回答の選択肢の右の数が、間違ったサブセットを返すことによって、上記のコードを「壊します」。私の推測では、マスキングスクリプトが実行される前に選択肢の順序がランダム化されているため、ストリームの位置参照が適用される前に選択肢が順不同です。
私はこの分野のJavascriptとQualtricsのドキュメントの経験が非常に限られているので、自分の選択部分集合の適切なランダム化を含むようにコードを適合させる方法について提案はありますか?あなたのhiddenChoices.each機能については
コードのために注意すべき小さなアップデートを、array.includes()は、Internet Explorerでサポートされていません/ここにあるポリフィルコードを貼り付けてください。[リンク](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes?v=control) – vancouverish