Hallo,
in einem Fragebogen wiederhole ich zwei Seiten zwölf Mal:
loopToPage('K3', 12);
und ich speichere die Seitenzahl in eine Variable, die um 1 größer als der loopIndex() ist (also 1 beim ersten Aufruf der Seite, 2 beim zweiten Aufruf, etc...)
$seitenzahl = loopIndex() + 1;
Auf der ersten der beiden zu wiederholenden Seiten wird ein Schieberegler eingebunden, bei dem eingestellt ist, dass alle Items beantwortet werden müssen. Das funktioniert auch alles bestens, außer wenn jemand nicht alle Items ausfüllt.
Dann wird zwar die Seite wiederholt, aber der loopIndex() gibt einen Wert aus, der 1 zu klein ist (außer auf der ersten Seite, da ist loopIndex() 0 und bei der Wiederholung der Seite wird nicht -1, sondern ebenfalls 0 ausgegeben).
Also:
bei loopIndex() = 0 und ein Item wird nicht ausgefüllt: nächster loopIndex() ist 0
bei loopIndex() = 1 und ein Item wird nicht ausgefüllt: nächster loopIndex() ist 0
bei loopIndex() = 2 und ein Item wird nicht ausgefüllt: nächster loopIndex() ist 1
bei loopIndex() = 3 und ein Item wird nicht ausgefüllt: nächster loopIndex() ist 2
usw...
Ich habe einen Workaround dafür gefunden:
if (getAnswerMissing() && ($seitenzahl_vorher > 1)) {
$seitenzahl += 1;
}
und
registerVariable($seitenzahl);
und ganz am Anfang der Seite:
if (isset($seitenzahl)) {
$seitenzahl_vorher = $seitenzahl;
} else {
$seitenzahl_vorher = 1;
}
Gibt es dafür noch eine elegantere Lösung?
Zudem ist es so, dass wenn ein Item vergessen wurde, dann werden die Schieberegler nochmal angezeigt (was auch so sein soll), und wenn man dann auf "Weiter" klickt, werden die Schieberegler noch einmal angezeigt (diesmal ohne, dass ein Item rot wird und ohne "Bitte beantworten Sie auch diese Frage – Ihre Antwort auf die Frage ist für die Studie sehr wichtig."). Erst wenn man dann nochmal auf "Weiter" klickt, kommt man weiter.
Das ist für meine Studie nicht schlimm, irritiert mich jedoch etwas, weil ich es mir zunächst nicht erklären konnte. Oder liegt das daran, dass der loopIndex() 1 zu klein ist? (Dafür würde sprechen, dass dieser Effekt erst ab Seite 2 auftritt, und nicht schon auf Seite 1, wo der loopIndex() nicht von 0 auf -1 korrigiert wird, sondern bei 0 bleibt.)
Vielen Dank schon mal! :-)