0 votes
in SoSci Survey (dt.) by s181531 (200 points)
edited by SoSci Survey

Hallo,
ich würde gerne bei zwei Fragen jeweils einen Schieberegler verwenden, der im Wertebereich zwischen 0-60 Stunden (ganze Zahlen) liegt.
Ich habe unter den Einstellungen des Schiebereglers die Differenzierung von 1-60 gewählt und anschließend folgenden HTML-Code auf der Seite des Fragebogens eingefügt, auf der sich beide Fragen befinden:

<script type="text/javascript">
<!--
formatter = function(value, reversed) {
  if (value < 0) return "";
  return String(Math.round((value) / 60 * 60)) + " h";
}
SoSciSliders.setFormat(formatter);
// -->
</script>

Problem dabei ist, dass die Angabe von „0 Stunden“ als „nicht beantwortet“ gewertet wird und der Regler nach Bewegung auch nicht auf 0 gestellt werden kann sondern 1 das Minimum ist. Alternative Lösungen mit „if (value < -1)“, eine Erweiterung auf 61 oder je ein HTML-Code nach jeder Frage habe ich bereits versucht, leider ohne Erfolg.
Ich freue mich über Tipps!

Danke und viele Grüße

1 Answer

+1 vote
by SoSci Survey (327k points)

Problem dabei ist, dass die Angabe von „0 Stunden“ als „nicht beantwortet“ gewertet wird

Bitte ändern Sie folgendes:

1) Geben Sie als Differenzierung 1-61 an, nur so kommen Sie sauber auf den Wertebereich 0-60.

2) Die Angabe von 0 Stunden dürfte in Ihrer Lösung aktuell gar nicht möglich sei. Falls doch, haben Sie evtl. eine Position für "keine Antwort" in der Frage definiert. Entfernen Sie diese bitte ggf.

3) Rechnen Sie minus 1:

return String(Math.round(value) - 1) + " h";
by s181531 (200 points)
Danke für die Antwort!
Die Angabe von "0 Stunden" ist mit dieser Lösung möglich. Durch die Rechnung -1 entsteht im Datensatz nun aber das Problem, dass eine Angabe von 0 Stunden zu einem Wert von 1 Stunde in den erhobenen Daten führt, bei Angabe 1h zu dem Wert 2, ..., bei 60h zu 61.
Gibt es eine Lösung, dass der Wert exakt so, wie er im Regler vom Befragten angegeben wird im Datensatz gespeichert wird?

Danke und viele Grüße
by SoSci Survey (327k points)
Das ist kein Problem per se, das ist einfach eine andere Kodierung.

Aber wenn Ihnen daran gelegen ist, das bereits im Datensatz "korrekt" zu kodieren, können Sie einfach mit put arbeiten:

put('IV01_01', value('XY01_01') - 1);

Der Befehl muss auf die folgende Seite, die interne Variable zum Umkodieren müssen Sie vorab noch im Fragenkatalog anlegen.
by s210612 (100 points)
Hallo,
ich hatte genau das gleiche Problem wie der ursprüngliche Fragensteller und habe nun diese Antwort gefunden. Nur beim letzten Schritt, also dass die Kodierung bereits im Datensatz "korrekt" ist, verstehe ich nicht genau, was gemacht werden muss. Für eine Antwort wäre ich sehr dankbar.
Außerdem, weil mittlerweile schon knapp 3 Jahre vergangen sind: Gibt es mittlerweile eine andere Lösung oder ist das obene beschriebene immer noch die aktuelle "Lösung"?
by SoSci Survey (327k points)
> Nur beim letzten Schritt, also dass die Kodierung bereits im Datensatz "korrekt" ist, verstehe ich nicht genau, was gemacht werden muss.

Legen Sie zunächst eine interne Variable im Fragenkatalog an (https://www.soscisurvey.de/help/doku.php/de:create:questions:internal)

Platzieren Sie anschließend den PHP-Code mit put(), und zwar auf der Seite nach (!) der Seite mit dem Schieberegler. Der PHP-Code ließt den Wert des Schiebereglers aus, subtrahiert 1, und schreibt den neuen Wert in die interne Variable. Deren Kennung müssen Sie bei put() als ersten Parameter eintragen (statt 'IV01_01').
by s210612 (100 points)
Vielen lieben Dank! Es hat geklappt!

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

...