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

0 votes

Hallo,

wir modifizieren Regler über Javascript so dass statt 0-100% ein Wert zwischen 0 und 50 angegeben wird. Das machen wir ziemlich ausführlich.

Beim Testen ist nun aufgefallen, dass sowohl bei der Auswahl 21 als auch bei der Auswahl 20 auf dem Regler teilweise der selbe Werte gespeichert wird. Das ist ein ziemlich großes Messproblem für unsere Studie.

Beispiel:

Variable, Auswahl über Regler, gespeicherter Wert. Zu beachten ist, dass ich immer den größten Wert im Regler für 20 ausgewählt habe und den kleinsten für 21.

DV37: 21 => 42
DV38: 20 => 42
DV39: 20 => 41
DV40: 21 => 42

DV37: 21 => 43
DV38: 20 => 41
DV39: 20 => 42
DV40: 21 => 42

Unser Code lautet:


<!-- formatter = function(value, reversed) { if (value < 0) return ""; return String(Math.round((value - 1) / (2))) + "€"; } SoSciSliders.setFormat(formatter); // -->

Irgendeine Idee was das Problem sein könnte?

Ich tu mir auch schwer die Transformation u verstehen. Auf einem 0-20 Regler werden Eingaben für mit 99 bis 101 hinterlegt. Der Wert von x bis 98.

DV32: 20 => 101
DV33: 19 => 98
DV34: 20 => 99
DB35: 20 => 99

Irgendeine Idee wie man das Script gestalten könnte damit die Transformation bei der Auswertung einfacher wird?

in SoSci Survey (dt.) by s032383 (220 points)
edited by s032383

2 Answers

0 votes

Sie können sich das Leben deutlich vereinfachen:

Stellen Sie als Differenzierung 1-51 ein (in der Frage anstatt 1-101) und für die Anzeige subtrahieren Sie einfach nur 1:

<!--
function formatter(value, reversed) {
  if (value < 0) return "";
  return String(Math.round(value - 1)) + "€";
}
SoSciSliders.setFormat(formatter);
// -->
by SoSci Survey (79k points)
edited by SoSci Survey
Danke für den Hinweis. Das hätte ja eigentlich ganz einfach sein können aber sobald ich bei der Differenzierung einen Wert angebe (z.b. 21, 52 etc.) hat der Regler zwar größere Abstände aber auch in Kombination mit dem oben genannten Javascript wird der Statustext nicht angepasst. Es steht dann weiterhin 1-100% da nur eben mit weniger Zwischenschritten. Irgendeine Idee woran das liegen könnte?
Nun, in der Funktion fehlte noch eine Klammer - dadurch war der Code fehlerhaft (s. Browser-Konsole) und wurde einfach gar nicht ausgeführt. Sollte es immer noch nicht funktionieren, prüfen Sie bitte, was in der JavaScript-Fehlerkonsole steht: https://www.soscisurvey.de/help/doku.php/de:create:javascript#fehler_finden
0 votes

Die Antwort auf Ihre Frage, warum der Code 42 mal "20" und mal "21" bedeutet, möchte ich Ihnen natürlich nicht schuldig bleiben.

Der Schieberegler bewegt sich kontinuierlich, also ohne Schritte. Das bedeutet, wenn er auf dem Bildschirm z.B. 400 Pixel einnimmt, dass je 4 Pixel für einen Code-Punkt stehen. Allerdings arbeitet der Schieberegler im Browser erstmal nicht mit ganzen Zahlen (wie später im Datensatz), sondern mit Kommazahlen. Also würden die 4 Pixel z.B. für 50,0; 50,25; 50,5 und 50,75 stehen.

Oder um es auf Ihren konkreten Fall zu übertragen: Wenn der Schieberegler bei 41,6 steht, dann wird im Datensatz gerundet der Code 42 gespeichert. Aber die Anzeige rechnet mit der Komma-Zahl, denn Sie runden laut Ihrer Formel er nach dem Rechnen:

Math.round((value - 1) / (2))

(41,6 - 1) / 2 = 20,3

Nach dem Runden wir hier also 20 auf dem Bildschirm angezeigt. Und was passiert bei 42,4? Dan wird ebenfalls 42 im Datensatz gespeichert, aber ...

(42,4 - 1) / 2 = 20,7

... auf dem Bildschirm erscheint eben aufgrund der Rechnung der Code 21.

by SoSci Survey (79k points)
Kann man das irgendwie beheben?
Entweder Sie runden vor dem dividieren (und danach nochmal) oder Sie folgen meiner Empfehlung aus der anderen Antwort und stellen die Differenzierung auf 1..51. Letzteres wäre m.E. die deutlich sauberere Variante. Auch in Hinblick auf die Analyse.
...