2017-05-17 4 views
0

Ich programmiere eine Qualtrics-Umfrage, in der mehrere verschiedene Ströme von Befragten mit verschiedenen Teilsätzen von Attributen dargestellt werden, um in einer Matrixfrage zu bewerten.Randomizing maskierte Auswahlen in Qualtrics mit Javascript

Es gibt eine ganze Reihe von Attributen und Fragen. Um zu vermeiden, dass ich tagelang durch die Anzeigelogik der Antwort-Ebene klicke, habe ich eine Antwort von @T angepasst. Gibbons (Use Javascript for Qualtrics matrix table display logic) und Javascript verwendet, um die Untergruppen mit dem folgenden Code zu maskieren.

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(); 
}); 

Idealerweise sind die gezeigten verbleibenden Elemente würden auch randomisiert werden, aber für die Frage nach dem Standard der Randomisierung Auswahl der Option ‚bricht‘ den Code oben durch die richtige Anzahl von Antwortmöglichkeiten Rückkehr, aber die falsche Teilmenge. Meine Vermutung ist, dass die Reihenfolge der Auswahlmöglichkeiten vor der Ausführung des Maskierungsskripts zufällig gewählt wird, so dass die Auswahlmöglichkeiten bereits außerhalb der Reihenfolge liegen, bevor die Positionsreferenzen meiner Streams angewendet werden.

Da ich sehr begrenzte Erfahrung mit Javascript und Qualtrics Dokumentation in diesem Bereich habe, ist schrecklich, gibt es irgendwelche Vorschläge, wie ich meinen Code anpassen könnte, um die richtige Randomisierung meiner Auswahl Teilmengen?

+0

Ein kleines Update für den Code zu notieren, array.includes() nicht vom Internet Explorer unterstützt so die Maskierung, wenn Sie nicht arbeiten kopieren/fügen Sie den hier gefundenen Polyfill-Code ein [link] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes?v=control) – vancouverish

Antwort

0

Für Ihre hiddenChoices.each Funktion versuchen Sie dies:

hiddenChoices.each(function(item) { 
    idName = "QR~"+quest+"~"+item+"~1"; 
    $(idName).up('tr.ChoiceRow').hide(); 
}); 
+0

Schließen, aber nicht ganz. Es behält die richtigen Optionen bei, auch wenn die Randomisierung aktiviert ist, aber die Reihenfolge bleibt bestehen. – vancouverish

+0

Ich verstehe nicht, auf welche Reihenfolge Sie sich beziehen. Ich dachte, das Ziel wäre es, die richtigen Optionen zu wählen. Was gibt es noch? –

+0

Entschuldigung, ich denke ich war nicht klar. Wenn die anzuzeigenden Optionen 1, 2, 3 sind und ich den Code wie von Ihnen vorgeschlagen ändere, werden alle Auswahlmöglichkeiten in der ursprünglichen Reihenfolge 1, 2, 3 ohne Randomisierung angezeigt. – vancouverish

Verwandte Themen