So, und hier ist das Beispiel zufällig ausgewählten Beispielhörproben.
Zunächst werden die Zufallsauswahl erstellt.
In einer Frage vom Typ "kurzer Text" in der ersten Gruppe wird in den Quellcode der Frage dieses kleine javascript-Stückchen eingetragen
Code:
<script type="text/javascript" charset="utf-8">
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
$(document).on('ready pjax:scriptcomplete',function(){
// Anzahl der gewünschten Beispiele pro Teilnehmer
var nbrExamples = 4;
// Fill the array
var arr = [];
// Hier muss dann in der scharfen Umfrage i < 113 stehen, ich habe aber nur 13 Texte
for (var i = 1; i < 14; i++) {
var i2='000'+i;
arr.push(i2.slice(-3));
}
arr = shuffle(arr);
anumbers = arr.slice(0,nbrExamples).join('');
$('#question{QID} input[type="text"]').val(anumbers);
// Nach dem Testen die // der nächsten Zeile entfernen, damit die Frage versteckt wird
// $('#question{QID}').hide();
});
</script>
Damit erhalte ich einen wohldefinierten Text in dieser Frage. Er enthält 4 (ich wollte ja 4 haben) zufällig ausgewählte Zahlen, alle dreistellig links mit "0" aufgefüllt.
Nun kann man diese Zahlen eine nach der anderen abgreifen mit der Funktion "substr()" und die Hörbeispiele dynamisch laden.
Ich habe die Beispiele einfach "hopp001.mp3", "hopp002.mp3",..."hopp110.mp3" genannt
Dann ist der Aufruf für das erste Beispiel
Code:
<audio controls="" style="width: 185px;"><source src="https://www.myServer.de/myFolder/hopp{substr(auswahl,0,3)}.mp3" type="audio/mp3" /></audio>
Das zweite Beispiel
Code:
<audio controls="" style="width: 185px;"><source src="https://www.myServer.de/myFolder/hopp{substr(auswahl,3,3)}.mp3" type="audio/mp3" /></audio>
Das dritte Beispiel
Code:
<audio controls="" style="width: 185px;"><source src="https://www.myServer.de/myFolder/hopp{substr(auswahl,6,3)}.mp3" type="audio/mp3" /></audio>
usw.
Außerdem hier die Erklärung zur dynamischen Zählung des Beispiels mittels
{self.sq_SQ001.qseq-6}
Die Property .gseq liefert die fortlaufende Nummer der Fragen, so wie sie angezeigt werden, beginnend bei "0".
Über "self" lese man im Handbuch
Und die 6 wird subtrahiert, damit es bei 1 startet, die ersten 7 Fragen (Index 0-6) werden ignoriert.
Hier das Beispiel
Das ist nun zunächst einmal schön und gut.
Aber man bekommt nichts umsonst.
Da nun in der Frage B1 jedes der 110 Beispiel stehen kann (in den übrigen Fragen analog), muss bevor die Auswertung starten kann, der gesamte Datensatz umstrukturiert werden
Zum Glück hat man die Frage "auswahl"
Ein Export nach EXCEL bringt also so etwas (nur jeweils 3 Items jeder Frage exportiert)
Mit einem kleinen Makro wird man also die Bereiche sortieren müssen,
Das, was hier in B1 steht nach B11, was in B2 steht, passt zufällig, was in B3 steht nach B6.
Am besten eine EXCEL Tabelle erstellen, die alle 110 x 13 Spalten enthält, und dann entsprechend dorthin kopieren.
Joffm