0 votes
in SoSci Survey (dt.) by s186862 (155 points)
edited by s186862

Hallo,
ich versuche eine Multilevelstruktur zu verwenden um in meinem Projekt "How well does one tell sarcasm" die Frage "WM01" immer wieder zu stellen (so oft, bis der Teilnehmer auf "Ende" klickt).
Ich habe jetzt einen Fragebogen "base" und einen "sub01". Wie erreiche ich jetzt von hier aus mein Ziel?
Gebe ich einfach auf Seite 2 von "sbu01" den Befehl "multiLevelDown('sub01');" Um immer wieder im Kreis zu gelangen? Käme ich dann immer noch mit einem einzigen Klick auf die vorletzte Seite von "base"?

Und wie sorge ich dafür, dass der verwendete Datenbank-Eintrag mit in der Auswertung ist/ Dass die Auswertungstabellen in einer nutzbaren Form vorliegen?
Ich kann nicht genauer erklären, beim letzten Versuch bin ich während dem Schreiben abgemeldet worden.

1 Answer

0 votes
by SoSci Survey (320k points)

Das "im Kreis" müssen Sie im Haupt-Fragebogen definieren- Am einfachsten erreichen Sie das mittels loopPage(). Dort können Sie eine große Anzahl an Wiederholungen wählen (was ist pro Person realistisch, wenn Sie noch sinnvolle Daten erwarten?) oder Sie arbeiten mit goToPage() oder setNextPage().

In der Anleitung zur Multi-Level Struktur finden Sie recht weit unten ein Beispiel mit loopPage(). Ich würde empfehlen, dass Sie damit einmal starten.

Der Abbruch, wenn ein Befragter nicht mehr mag, ist relativ einfach. Entweder die Befragten schließen einfach das Browserfenster oder Sie bieten im untergeordneten Fragebogen einen Knopf oder eine Auswahl und geben die Wahl mittels multiLevelReturn() zurück, sodass Sie im übergeordneten Fragebogen die Schleife ggf. per goToPage() beenden können.

Und wie sorge ich dafür, dass der verwendete Datenbank-Eintrag mit in der Auswertung ist/ Dass die Auswertungstabellen in einer nutzbaren Form vorliegen?

Andere Baustelle ... aber am besten schreiben Sie die notwendigen Daten per put() in eine oder mehrere interne Variablen.

by s186862 (155 points)
Okay, setNextPage() funktioniert ungefähr wie erwartet und hat folgende Probleme, wobei ich vermute, dass beide gleich gelöst werden:
1. Die Frage kann nicht mehr beantwortet werden, da sie bereits beantwortet wurde (die müsste sozusagen zurückgesetzt werden). Verwandtes Problem: Da die Frage immer als beantwortet gilt, läuft der Fragebogen immer weiter.
2. Es wird kein neuer Datenbankeintrag gezogen. Der alte bleibt einfach stehen, bis ich den Tab schließe.
Wenn ich es richtig verstehe, würde ich bei loopPage() diese Probleme nicht haben, aber ich werde aus der Erklärung nicht schlau.
Ist die korrekte Syntax im "base" Fragebogen "loopPage("sub01")" anzugeben?
by SoSci Survey (320k points)
ad 1) Legen Sie die Frage zum Fortsetzen in den untergeordneten Fragebogen - dann ist es jedesmal eine neue Frage. Alternativ können Sie die valueDrop() eine vorher gegebene Antwort löschen.

ad 2) Wenn die Zufallsziehung im Haupt-Fragebogen passiert, müssen Sie gleich zu Beginn eine ausreichende Anzahl Zettel ziehen oder mit der Array-Lösung arbeiten, die ich angsprochen hatte. Wenn Sie die Ziehung im untergeordneten Fragebogen vornehmen, dann wird in jedem Durchgang neu gezogen.

> Ist die korrekte Syntax im "base" Fragebogen "loopPage("sub01")" anzugeben?

Nein. Im loopPage() tragen Sie bitte die maximale Anzahl an Wiederholungen ein oder ein Array, welche Stimuli gezeigt werden sollen, z.B. aus valueList()
by s186862 (155 points)
On the previous page setNextPage() was used. However, the page sub01 identified in setNextPage() was not found in the questionnaire.

Gehe Sie mal für einen Moment davon aus, dass ich alles was Sie nicht ausdrücklich sagen falsch machen werde.

In der Hoffnung auszudrücken, was ich machen will: Ich will, dass die Teilnehmer beliebig oft die SELBE Frage immer wieder beantworten. Die Frage lautet: "Ist das Sarkasmus?", wobei "das" sich auf einen Datenbankeintrag bezieht, welcher jedes mal neu gezogen wird. Ich versuche noch einen Weg zu finden, den Datenbankeintrag Teil der Frage zu machen, so dass der nicht über oder unter der Frage steht.
by SoSci Survey (320k points)
> Gehe Sie mal für einen Moment davon aus, dass ich alles was Sie nicht ausdrücklich sagen falsch machen werde.

Tja, Trial and Error ist nicht die effizenteste Strategie, sich neues Fähigkeiten anzueignen ... aber jedem Fehler wohnt auch die Chance auf Wissensgewinn inne :)

> Die Frage lautet: "Ist das Sarkasmus?"

Genau. Diese Frage packen Sie in den untergeordneten Fragebogen. Und eventuell dann noch die Frage, ob man weitermachen will. Aber für den Moment schlage ich vor, dass Sie erstmal das mit der ständigen Wiederholung der Frage über eine Multi-Level-Struktur umsetzen. Schön eins nach dem anderen.

Wenn Sie die Frage immer wieder auf's neue (ohne ohne vorherige Antwort) angezeigt bekommen, dann setzen wir im nächsten Schritt die Zufallsziehung drauf.

> Ich versuche noch einen Weg zu finden, den Datenbankeintrag Teil der Frage zu machen, so dass der nicht über oder unter der Frage steht.

Sehen Sie sich mal die Anleitung zu Platzhaltern an - ich denke, damit sollten Sie weiterkommen. Oder noch eleganter die Funktion show(), welche den Platzhalter direkt einbinden kann ohne ihn im Interview zu speichern. Aber das alles gehört zu Schritt 1. Jetzt erstmal das multiLevelDown()
by s186862 (155 points)
Zur Zeit verwende ich eine "Auswahl Abfolge mit Reaktionszeit", weil, dass dem, was ich will am ähnlichsten scheint: der Probant klickt auf eine Antwortmöglichkeit, und soll sofort bei der "nächsten" (also der selben nur dass jetzt ein anderer Datenbankeintrag geladen wurde) Frage finden.
Der Button:
buttonToPage('Last', 'Ende');
html(
  '<div style="text-align: center; margin: 2em 0">'.
  buttonToPage('Last', 'Ende').
  '</div>'
);
sollte kein Problem sein.
Wenn ich den Befehl
setNextPage('sub01');
In Base packe kommt die oben kopierte Fehlermeldung
Wenn der Befehl im selben Fragebogen steht, wie die Frage entsteht das Problem aus dem ersten Kommentar.
by SoSci Survey (320k points)
Gut, den Fragetyp können Sie entweder beibehalten - oder Sie verwenden stattdessen eine Auswahl, wo Sie die Darstellung auf "Kärtchen" ändern und einstellen, dass es nach dem Klick direkt weiter zur nächsten Fragen gehen soll.

> Wenn ich den Befehl
> setNextPage('sub01');

Dann lesen Sie bitte als nächstes die Sache mit den Seiten-Kennungen wie in der Anleitung zu setNextPage() verlinkt: https://www.soscisurvey.de/help/doku.php/de:create:functions:setnextpage
by s186862 (155 points)
Ich bin hellauf begeistert von der Doku: SetNextPage(): "Verwenden sie diesen Befehl auf keinen Fall um eine Seite zu wiederholen."
LoopPage():
Beispiel: Alle Fragen einer Rubrik in zufälliger Abfolge
Beispiel: Fragen in zufälliger Abfolge präsentieren II
Die Beschreibung klingt zwar so, als ob ich dass was ich will erreichen könnte, wenn ich als Anzahl Wiederholungen 9000 (oder noch besser die verbleibende Anzahl Zettel in der Urne) angebe, und dann einfach frühzeitig per Button abbreche, aber die Codebeispiele zeigen nicht, wie ich EINE EINZIGE SEITE BELIEBIG OFT wiederhole, sondern stattdessen scheint loopPage() als randomizer zu fungieren.
Was macht der Befehl question()? Wenn ich den Befehl question(Frage die ich wiederholen will); an der Richtigen stelle erteile, würde das dazu führen, dass die Frage, die ich wiederholen will, gestellt wird, wenn der Code diese Stelle erreicht?
Bevor Sie antworten, bitte geben Sie wieder, was Sie glauben, was ich vorhabe (Tipp: Eine einzige Seite wiederholen, auf der jedes mal ein neuer Datenbankeintrag dargestellt wird, und der Teilnehmer immer wieder die selbe Frage zu dem Datenbankeintrag beantwortet).
Das liest sich jetzt mega herablassend, aber nachdem ich jetz 4 Mal hilfe für etwas anderes bekommen habe, würde ich das Risiko gerne in den zweistelligen Prozentbereich reduzieren.
by SoSci Survey (320k points)
> Ich bin hellauf begeistert von der Doku: SetNextPage(): "Verwenden sie diesen Befehl auf keinen Fall um eine Seite zu wiederholen."

Ich sehe, sie mögen Ihr Forschunggebiet *bg*

Ja, diese Formulierung sollte ich einmal überprüfen. Sie ist ein wenig undifferenziert. In Ihrem Anwendungsfall ist die Verwendung sinnvoll - eigentlich sollte die Warnung davon abhalten, dass man die Funktion verwendet, wenn man eine Seite aufgrund fehlender Daten erneut anzeigen will. Da macht sie unnötig Probeme (wenn man einen Zurück-Knopf erlaubt).

> aber die Codebeispiele zeigen nicht, wie ich EINE EINZIGE SEITE BELIEBIG OFT wiederhole, sondern stattdessen scheint loopPage() als randomizer zu fungieren.

Das "beliebig oft" ist ein hypothetisches Konstrukt, welches in der Realität nicht vorkommen. Dort würde man wohl schon aus methodischen Gründen eine Obergrenze von z.B. 50 Wiederholungen festlegen, weil man von einer einzelnen Person bei mehr Wiederholungen keine sinnvollen Daten mehr erwartet. Oder schlimmer noch, weil systematische Verzerrungen in der Analyse auftreten können, wenn eine einzelne Person für einen großen Anteil der Daten verantwortlich ist.

> Was macht der Befehl question()?

Eine Frage anzeigen - er hat dieselbe Funktion (plus Parameter) als würden Sie eine Frage in die Fragebogen-Seite hineinziehen.

> Wenn ich den Befehl question(Frage die ich wiederholen will); an der Richtigen stelle erteile, würde das dazu führen, dass die Frage, die ich wiederholen will, gestellt wird, wenn der Code diese Stelle erreicht?

Ja, aber wennn Sie dafür nicht mittels multiLevelDown() einen neuen Fall in Datensatz anlegen, dann wird die vorige Antwort immer angezeigt und überschrieben. Das bringt sie also nicht weiter.

> bitte geben Sie wieder, was Sie glauben, was ich vorhabe

Sie möchten möglichst viele Bewertungen für möglichst viele Ihrer Sätze und am Ende brauchen Sie eigentlich nur einen Datensatz aus Pärchen: Stimulus-Text + Bewertung, damit Sie damit ihren Machine Learning Algorithmus trainieren können.

> würde ich das Risiko gerne in den zweistelligen Prozentbereich reduzieren.

Wir verstehen uns :)
by s186862 (155 points)
Schön zu lesen, dass Sie mich verstehen,
aber bruteforce meine Methodik nur ungerne.
Also zum weiteren Vorgehen für doofe (also mich):
Schritt eins: Ich sage im Hauptbogen "multiLevelDown('sub01');"
um in den Unterbogen zu kommen und ich sage auf der selben Seite (also immer noch im Hauptbogen)
Seitenkennung_der_zu_wiederholenden_Seite=loopPage(9000);
(Wenn es eine variable für die Anzahl noch ziehbarer Zettel in einer Urne gibt, würde ich gerne die statt "9000" verwenden, damit ich den Grenzfall ausschließen kann)
Auf Seite Seitenkennung_der_zu_wiederholenden_Seite im Unterbogen habe ich dann meine Frage + Datenbankzeile.
Durch das so Aufrufen wird jedesmal eine neue Datenbankzeile gezogen, die Frage kann erneut beantwortet werden und in der Auswertung existiert für jede Antwort ein einzelner Eintrag, dem ich einen Teilnehmer im Hauptfragebogen zuordnen kann.
Die Seite Seitenkennung_der_zu_wiederholenden_Seite kann wieder verlassen werden, indem ich an einen Button diesen Befehl binde:
multiLevelReturn($Seite_im_Hauptbogen);
by SoSci Survey (320k points)
> Schritt eins: Ich sage im Hauptbogen "multiLevelDown('sub01');"

Korrekt.

> und ich sage auf der selben Seite (also immer noch im Hauptbogen)
Seitenkennung_der_zu_wiederholenden_Seite=loopPage(9000);

Entweder das, aber das frisst recht viel Speicher. Wenn Sie loopPage() dennoch nutzen wollen, dann müssten Sie es *vor* das multiLevelDown() setzen. Alternativ geben Sie der Seite eine Kennung "down" (oder eine andere nach freier Wahl) und schreiben vor das multiLevelDown() noch die Zeile

setNextPage('down');

Im untergeordneten Fragebogen platzieren Sie dann den Zufallsgenerator mit Anzeige und die Frage. Um den Abbruch-Knopf kümmern wir uns später. Aber als Vorbereitung auf selbigen können Sie schonmal eine zweite Seite anlegen, auf welcher nur der PHP-Code steht:

multiLevelReturn();

Wenn das läuft (zu erkennen daran, dass Sie mit jeder Beurteiung eine neue Datenzeile im Datensatz bekommen), kümmern wir uns um die Verfeinerung.
by s186862 (155 points)
So habe ich das jetzt verstanden (siehe Bild).
Folgende Probleme: Frage wird nicht refreshed;
wenn ich SetNextPage() aus "down" rausnehme, wird nicht wiederholt;
Der "Ende"-Button funktioniert (vermutlich wegen punkt 1) nur bevor die Frage beantwortet wurde. Kann ich ihnen einen Link schicken? Jedes mal ein Bild zu machen wird umständlich werden.
by SoSci Survey (320k points)
Das Bild ist leider ein wenig klein geworden. Aber Sie haben unter "Fragebogen zusammenstellen" zwei Fragebögen angelegt, das multiLevelDown() und das setNextPage() sind im ersten und die Frage ist im zweiten und Sie starten zum Testen den ersten. Ist das soweit korrekt?
by s186862 (155 points)
Genau.
Im ersten (Hauptbogen) sind auch Fragen zum Teilnehmer (Beruf, Englischkenntnisse,...).
Dann steige ich mit:
multiLevelDown('sub01');
setNextPage('down');
in den zweiten (Unterbogen).
Dort ist dann eigentlich alles auf der ersten Seite (genannte "down")
also die Frage und der DB-Zugriff und:
setNextPage('down');
buttonToPage('Last', 'Ende');
html(
  '<div style="text-align: center; margin: 2em 0">'.
  buttonToPage('Last', 'End').
  '</div>'
);
Die Seite "Last" befindet sich ebenfalls im Unterbogen und enthält nur den multiLevelReturn();
by SoSci Survey (320k points)
> Dann steige ich mit:
> multiLevelDown('sub01');
> setNextPage('down');

Wie weiter oben geschrieben: Das setNextPage() muss vor (!) das multiLevelDown(). Sonst verlassen Sie den PHP-Code, bevor das überhaupt ausgeführt werden kann.

Im untergeordneten Fragebogen darf kein setNextPage() stehen.
by s186862 (155 points)
Ok, ich komme jetzt in den Unterbogen, aber ohne setNextPage() im Unterbogen komme ich direkt nachdem die Frage einmal beantwortet wurde zurück in den Hauptbogen, genauer in die Seite nach dem MultiLevelDown().
by SoSci Survey (320k points)
>  genauer in die Seite nach dem MultiLevelDown().

An dieser Stelle sollte der Haupt-Fragebogen eigentlich wegen des setNextPage() die vorige Seite wiederholen. Was sagt denn die Debug-Information dazu?

Falls sich setNextPage() in dieser Konstellation nicht zur Schleife überreden lässt, fügen Sie eine (ansonsten leere) Seite nach dem multiLevelDown() ein und dort ein goToPage() zur vorigen Seite.
by s186862 (155 points)
Ausprobiert.
Wie sind Sie darauf gekommen, dass es sich anders verhält, als wenn SetNextPage() verwendet wird.
Steht es im Unterbogen, verhält sich der Bogen genau so, wie wenn SetNextPage() auf der Seite mit der Frage steht.
Steht es im Hauptbogen bekomme ich folgende Fehlermeldung (auch wenn ich MultiLevelDown() verwende):

Questionnaire Error (page 4)
There is no page in the questionnaire with the following ID: down. The command goto() has therefore not been executed.

Aber keine Schleife.

Wie schlimm sind die Probleme, die ich mit down=loopPage(großeZahl) bekomme? Das wäre etwas, was ich noch nicht versucht habe.
by SoSci Survey (320k points)
> There is no page in the questionnaire with the following ID: down. The command goto() has therefore not been executed.

Gut, dann können wir hier ansetzen :)

Die Seite, auf welcher das multiLevelDown() steht muss die Seitenkennung (!) "down" bekommen, damit Ihr setNextPage('down') oder goToPage('down') funktionieren kann: https://www.soscisurvey.de/help/doku.php/de:glossary#seitenkennung

> Wie schlimm sind die Probleme, die ich mit down=loopPage(großeZahl) bekomme?

Das kann von "geht problemlos" bis "out of memory" reichen. Ich denke, das Risiko ist bei ein paar tausend Wiederholungen nicht so groß. Probleme hatten wir in der Vergangenheit eigentlich nur, wenn längere Seitenabfolgen (z.B. 50 Seiten) vielfach gestapelt wurden - ein Problem, das mit Seite ohne Ausgabe entstehen kann. Aber im Sinne einer Risiko-Minimierung würde ich dennoch empfehlen, erstmal die Seitenkennung einzutragen und dann zu testen.
by s186862 (155 points)
Da loopPage() genau für das da zu sein scheint, fürdas ich es verwenden will, versuche ich es mal damit.
Ich gehe fest davon aus, dass ich es nicht hinkriege und schreibe schonmal meinen Ansatz:
In die Seite, wo zurzeit MultilevelDown('sub01') steht ersetzte ich
setNextPage('down'); (welches sich auf die Seite 'down' im Unterbogen bezieht)
durch
down = loopPage(9000);
Sollte das wider Erwarten funktionieren, versuche ich rauszufinden, ob es eine Variable gibt, mit der ich im Fragebogen erkennen kann, wieviele Zettel noch in der Urne sind.
Dann kann ich den Fall abfangen, wenn die Urne leer ist und die Anzahl Wiederholung wird in der Regel auch geringer sein.
by SoSci Survey (320k points)
> Sollte das wider Erwarten funktionieren, versuche ich rauszufinden, ob es eine Variable gibt, mit der ich im Fragebogen erkennen kann, wieviele Zettel noch in der Urne sind.

Diesen Gedanken hatte ich oben bewusst ignoriert. Er führt Sie in die falsche Richtung. Der Grenzfall ist nämlich, dass in der Urne nur noch 1 Zettel liegt (weil die letzten 500 Teilnehmer:innen die anderen 8999 bewertet haben). Dann ist es ziemlich ungefährlich, dass der Teilnehmer nach Bewertung des einen Satzes noch mal aus allen 9000 wählen kann. Im schlimmsten Fall wird der eine Satz doppelt bewertet. Und selbst das wäre datentechnisch nicht schlimm. Wenn dagegen nach einem Satz Schluss ist, wäre das wohl nicht optimal.

Und nochmal: Denken Sie an parallel laufende Interviews. Selbst wenn noch 9000 Zettel in der Urne sind, kann es passieren (wenn viele Personen gleichzeitig teilnehmen und parallel 8999 Zettel ausfüllen), dass dieselbe Person im zweiten Durchlauf nochmal denselben Satz bekommt. Da bringt es nichts, mitzuzählen :)

Wenn Sie ohnehin loopPage() verwenden, können Sie auch die Idee mit dem Array und shuffle() nochmal verfolgen. Damit würden Sie sicherstellen, dass eine Person sicherlich nicht zweimal denselben Satz bekommt. Allerdings auf Kosten der Gleichverteilung bei den Sätzen über alle Interviews hinweg. Ich würde Ihnen deshalb empfehlen, beim Zufallsgenerator zu bleiben.
by s186862 (155 points)
Wollen Sie was lese, was nicht überraschend ist?
There is an error in the PHP code:

Questionnaire Error: Command or string (text) unfinished

    A command, e.g. question() is missing a semicolon or
    a string (text in quotation marks) is unclosed or
    the string itself contains an apostrophe, e.g. html('Let's do it!'); – if the latter is the case, please type in a backslash (\) first.
    Perhaps the opening and closing braces for the statement blocks are mismatched.

Der Code ist:
down = loopPage(9000);
multiLevelDown('sub01');
Ich nehme an, dass eines der Probleme ist, dass loopPage() ein int ist, aber ich weiß nicht, wie sonst ich die Seite mitteile.
by SoSci Survey (320k points)
Wenn Sie den Wiederholungsindex aus loopPage() in eine Variable speichern möchten, muss der Variablennamen mit einem Dollar-Zeichen beginnen:

$down = loopPage(9000);

In Ihrem Fall reicht aber auch:

loopPage(9000);
by s186862 (155 points)
Danke, die Loop funktioniert jetzt wie geplant...
Nur komme ich jetzt mit MultiLevelReturn() nicht wieder raus.
Kann ich irgendwie im Hauptfragebogen abfragen, ob ich ein ML-Return hatte?
if(komme aus dem Unterbogen)
gotoPage(Last) //verlasse Loop
by SoSci Survey (320k points)
> Nur komme ich jetzt mit MultiLevelReturn() nicht wieder raus.

Nun ja, wenn Sie zurückkehren, wird ja umgehend wieder in den (nächten) untergeordneren Fragebogen verwiesen.

Bevor wir es unnötig komplex machen: Erstellen Sie im untergeordneten Fragebogen bitte eine dritte Seite mit der Verabschiedung und einem buttonHide(). Diese Seite liegt nach Seite 2 mit dem multiLevelReturn(), wird also normalerweise nie aufgerufen.

Mit einem buttonToPage() auf diese Seite haben Sie ein offizielles Ende ohne komplexe Filterführung :)
by s186862 (155 points)
Also quasi die Letzte Seite vom Hauptbogen in den Unterbogen.
Kleinigkeit: Auf der (vor)letzten Seite wollte ich noch fragen, wie die Teilnehmer ihre Perfomance einschätzen. Kann ich irgendwie dafür sorgen, dass die Antwort bei der Auswertung bei den anderen Fragen der selben Rubrik/aus dem Hauptbogen abgespeichert wird?
Kann ich die Ausgebe vom Fragebogen irgendwie testen?
by SoSci Survey (320k points)
> Kleinigkeit: Auf der (vor)letzten Seite wollte ich noch fragen, wie die Teilnehmer ihre Perfomance einschätzen.

Dann doch mit Umweg.... Platzieren Sie dafür auf Seite 2 im untergeordneten Fragebogen ein

multiLevelReturn('resume');

und auf der Seite dahinter ein

multiLevelReturn('stop');

Die Texte können Sie frei wählen. Der wesentliche Punkt ist, dass Sie über dem multiLevelDown() im Hauptfragebogen noch einen Filter einbauen:

if (multiLevelResponse() == 'stop') {
  goToPage('later');
}

Die Seite "later" wäre dann die mit Ihren Zusatzfragen.

> Kann ich die Ausgebe vom Fragebogen irgendwie testen?

Sie sehen die Daten unter Erhobene Daten -> Daten ansehen.
by s186862 (155 points)
Neuer Fehler aufgetaucht, der beim Testen nicht aufgefallen ist:
Nutzer werden trotz SetNextPage(end) zurück zu den Fragen geschickt.
Das aktuelle Patch ist, dass ich den html Teil von der letzten Seite auf die Vorletzte Seite gebracht habe. Im schlimmsten Fall wird die Selbstbewertung dann nicht erhoben.
by SoSci Survey (320k points)
Wenn Sie den Code der beiden Fragebögen posten, kann ich gerne mehr dazu sagen. Wenn Sie die Debug-Information posten, von der Stelle wo es schief läuft, kann ich wahrscheinlich noch akkurater weiterhelfen.
by s186862 (155 points)
Im base:
loopPage(9000);
multiLevelDown('sub01');
Im sub01
Auf seite "down" (1):
buttonToPage('Last', 'End');
html(
  '<div style="text-align: center; margin: 2em 0">'.
  buttonToPage('Last', 'End').
  '</div>'
);
[+inhalt]
Seite "Re"(2)
multiLevelReturn();
Seite "Last" (3)
SetNextPage('end');
[+ inhalt]
Seite "end" ist nur html
by SoSci Survey (320k points)
> Nutzer werden trotz SetNextPage(end) zurück zu den Fragen geschickt.

Nein, im Gegenteil. Sie werden genau wegen des setNextPage('end') zurück geschickt. Denn nach Abschluss eines untergeordneten Fragebogens (=Erreichen der letzten Seite) geht es automatisch zurück zum übergeordneten Fragebogen.

Mein Vorschlag wäre ja, dass sie auf der Seite "Last" im Fragebogen "sub01" Ihre Abschlussfragen einbinden und danach eine Pseudo-Ende-Seite:

text('adieu');
buttonHide();

Alternativ müssten Sie mit unterschiedlichen multiLevelReturn() arbeiten und dann im übergeordneten Fragebogen einen Filter einbauen. Dies ist komplizierter und bietet m.E. in Ihrem Fall keinen großen Vorteil.
by s186862 (155 points)
Dass heißt einfach nur buttonHide(); und meine Lösung wäre ok?
so tun, als ob der Fragebogen auf der vorletzten Seite endet?
by SoSci Survey (320k points)
Korrekt. Eine Letzte Seite, die technisch keine ist.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...