0 votes
in SoSci Survey (dt.) by s222544 (640 points)

Hallo Sosci Survey Online Support,

meine Frage ähnelt dieser hier (https://support.soscisurvey.de/?qa=44085/dargestellte-platzhalter-schieberegler-gleichen-anpassen), nur habe ich keinen Schieberegler, sondern eine Auswahlfrage.

Die Probanden wählen aus drei möglichen Antworten eine aus. Unter der Auswahlfrage erscheint eine offene Texteingabe, die um die Begründung der Auswahl bittet.

Leider war den Probanden im Pre-test nicht ganz klar, nach welcher Begründung gefragt wurde.

Deshalb möchte ich folgenden JS Platzhalter auf gleicher Seite einbauen:

Wenn Auswahlfrage Option A gewählt wurde - bitte begründen Sie Ihre Entscheidung der Option A als Fragetext der offenen Texteingabe.

Wenn Auswahlfrage Option B gewählt wurde - bitte begründen Sie Ihre Entscheidung der Option B als Fragetext der offenen Texteingabe.

Wenn Auswahlfrage Option C gewählt wurde - bitte begründen Sie Ihre Entscheidung der Option C als Fragetext der offenen Texteingabe.

Ich bin sehr dankbar für Ihre Hilfe in der Umsetzung!

Viele Grüße!

1 Answer

0 votes
by SoSci Survey (325k points)

Ehrlich gesagt würde ich - auch in Hinblick auf die Auswertung - die drei Fragen separat auf die Seite legen, und dann abhängig von der Auswahl eine davon anzeigen: Fragen bei Auswahl einer bestimmten Option sofort einblenden.

Alternativ könnten Sie natürlich auch ein <span id="option_desc"></span> im Fragetext unterbringen, und dieses dann mittels innerHTML in Abhängigkeit von der gewählten Option austauschen.

by s222544 (640 points)
edited by s222544
Vielen Dank für Ihre Antwort.

Es sind leider keine drei voneinander verschiedene Fragen, sondern drei Antwortmöglichkeiten zu einer Frage, die sich direkt auf das Experiment (gleiche Seite) beziehen. Deshalb kann ich daraus keine drei Fragen kreieren.

Könnten Sie vielleicht die Alternative noch ein bisschen besser beschreiben? Was würde option_desc machen und was meinen Sie mit austauschen?

Vielen Dank!
by SoSci Survey (325k points)
Ob es eine oder drei Fragen sind (also das "bitte begründen Sie Ihre Entscheidung der Option A"), können Sie doch frei entscheiden. Angezeigt wird ja ohnehin nur eine Variante.

> Könnten Sie vielleicht die Alternative noch ein bisschen besser beschreiben?

Sehen Sie sich dazu bitte in er Anleitung mal folgendes Beispiel zur Verwendung von innerHTML an: https://www.soscisurvey.de/help/doku.php/de:create:personal-code
by s222544 (640 points)
Vielen Dank! Ihre erste Antwort erscheint mir einfacher umzusetzen! Wenn ich früher 3 Begründungsfragen hatte (je eine pro Seite Experiment), so brauche ich pro Seite drei neue Fragen, bei denen immer nur eine erscheint, oder?

Ich muss also 9 neue Begründungsfragen anlegen, richtig? (3 (für A,B,C) für die erste Seite, wieder 3 (für A,B,C) für die zweite Seite und noch mal 3  (für A,B,C) für die dritte Seite.

Vielen Dank!
by s222544 (640 points)
Um Ihren Vorschlag umzusetzen, verwende ich folgende Anleitung: https://www.soscisurvey.de/help/doku.php/de:create:dynamic#beispiel_1bmehrere_gleichartige_fragen

Vielleicht als Vorwissen: Die erste Frage beinhaltet Javscript Code (eine Auswahlfrage, bei der nur bei Option C eine Texteingabe Frage erscheint.

Ihrem Vorschlag folgend habe ich die Begründungsfrage (die nach der Auswahlfrage für alle drei Optionen erscheint) in jeweils drei offene Texteingaben geteilt (R101 (für A), R102 (für B), R103 (für C), mit dem Gedanken, wenn Option A ausgewählt wird, die Folgefrage R101 erscheint: Bitte begründen Sie die Auswahl A (usw. mit B und C).


Da ich bereits JS Code verwende, habe ich folgenden JS Code als HTML Text probiert:

<script type="text/javascript">
<!--
function DynamicFilter(auswahlID, frageID) {
    
//OptionA = Ursprung; B=beibehalten C= neues
var optionA = document.getElementById(auswahlID + "_01a");  // Original
var optionB = document.getElementById(auswahlID+ "_02a");  // Option "Beibehalten"
var optionC = document.getElementById(auswahlID+ "_03a");  // Option "Neues"
var frage = document.getElementById(frageID + "_qst");  // Quest: RS1
 
function toggle() {
  if (optionA.checked) {
    // Wurde "Neues, anderes" gewählt, dann wird die Frage angezeigt
    // Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
    frage.style.display = "";
  } else {
    // Mit der Anzeigeoption "none" wird die Frage ausgeblendet
    frage.style.display = "none";
  }
}
SoSciTools.attachEvent(optionA, "click", toggle);
SoSciTools.attachEvent(optionB, "click", toggle);
SoSciTools.attachEvent(optionC, "click", toggle);
 
// Und jetzt gleich soll sie auch ausgeführt werden, damit die Anzeige zu Beginn korrekt ist
// (z.B. ausblenden der Texteingabe zu Beginn)
toggle();
}
new DynamicFilter("QF01", "R101");
new DynamicFilter("QF02", "R201");
new DynamicFilter("QF03", "R301");
new DynamicFilter("QF04", "R401");
// -->
</script>

Darf ich Sie höflich um die Beantwortung meiner Fragen bitten?

1) Beim new DynamicFilter nach der letzten geschweiften Klammer: welche Folgefrage (RS) soll reingeschrieben werden - die Folgefrage hängt direkt von der gegebenen Antwort ab.

2) ich habe insgesamt 4 Seiten, bei denen diese JS Code funktionieren müssen - deshalb auch derzeit bei new dynamicfilter QF01-QF04. Wird sich der Code von Seite zu Seite unterscheiden?


Hier ein Link direkt zur betroffenen Seite: https://www.soscisurvey.de/1454test/index.php?i=WGW79VZ9Z3K9&rnd=KZSC

Vielen Dank für Ihre Unterstützung!
by SoSci Survey (325k points)
> 1) Beim new DynamicFilter nach der letzten geschweiften Klammer: welche Folgefrage (RS) soll reingeschrieben werden

Sie werden den Code ein wenig abwandeln müssen, damit es funktioniert. Sie haben ja drei Frage-IDs, also ...

function DynamicFilter(auswahlID, frageA, frageB, frageC) {
  ...
  var frageAA = document.getElementById(frageA + "_qst");
  var frageBB = document.getElementById(frageB + "_qst");
  var frageCC = document.getElementById(frageC + "_qst");
  ...
  function toggle() {
      frageAA.style.display = "none";
      frageBB.style.display = "none";
      frageCC.style.display = "none";
      if (optionA.checked) {
         frageAA.style.display = "";
      }
      if (optionB.checked) {
         frageBB.style.display = "";
      }
      if (optionC.checked) {
         frageCC.style.display = "";
      }
  }
}
...

So oder so ähnlich.

> Wird sich der Code von Seite zu Seite unterscheiden?

Die Frage-Kennungen geben Sie ja in der new DynamicFilter()-Zeile (nur eine davon!) an. Sonst brauchen Sie nichts anzupassen.
by s222544 (640 points)
Vielen Dank!

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

...