0 votes
in SoSci Survey (dt.) by s150563 (140 points)
edited by SoSci Survey

Hallo zusammen,

ich habe eine Frage mit 3 Schieberegler (mit konstanter Summe) erstellt und möchte dazu eine Ausweichoption für die ganze Frage haben. Die Option konnte ich bei der Frage nicht finden und deswegen habe ich versucht, eine Auswahlfrage mit der Option "Nicht bekannt" damit zu kombinieren. Das hat nicht so gut geklappt, da die Option neben dem ersten Schieberegler auf der rechten Seite aufgetaucht ist, auch ohne Text.
Was ich gerne haben möchte ist etwas in der Art:

Bild

Wie könnte ich das realisieren? Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (302k points)

Bitte erstellen Sie einfach eine Frage vom Typ "Mehrfachauswahl" mit nur einer Auswahloption "Nicht bekannt". Ohne Frage-Nummer und Frage-Text. Und platzieren Sie diese direkt unter der anderen Frage.

Die Schieberegler werden dadurch nicht automatisch deaktiviert - dafür bräuchten Sie noch ein wenig JavaScript.

by s150563 (140 points)
Vielen Dank für die zügige Antwort!
by s150563 (140 points)
Ich habe die letzte Tage mich ein bisschen mit JS beschäftigt und versucht, für die drei Schieberegler einen Code schreiben mit den folgenden Zielen:
1.  Überprüfung der Summe der drei Schieberegler (soll zwischen 90% und 105% liegen. Die Regler haben 5% Intervalle). Das soll natürlich nur stattfinden, wenn der Nutzer bei allen drei Reglern einen Wert gewählt hat.
2. Deaktivierung der drei Regler, wenn man auf "Nicht bekannt" clickt.
3. Reaktivierung der drei Regler, wenn man noch mal auf "Nicht bekannt" clickt.

Ich habe den folgenden Code dafür geschrieben:

<script type="text/javascript">
var x1, x2, x3;
var NichtBekannt = document.getElementById("UI09_03");
var slider1 = SoSciSliders.getSlider("UI10_01");
var slider2 = SoSciSliders.getSlider("UI10_02");
var slider3 = SoSciSliders.getSlider("UI10_03");
var testinput1 = 0, testinput2 = 0, testinput3 = 0;
var testinput;

x1 = slider1.value;
x2 = slider2.value;
x3 = slider3.value;
 

slider1.addEventListener("change", function(){testinput1 = 1;});
slider2.addEventListener("change", function(){testinput2 = 1;});
slider3.addEventListener("change", function(){testinput3 = 1;});

slider1.addEventListener("change", function(){testinput = testinput1 * testinput2 * testinput3;});
slider2.addEventListener("change", function(){testinput = testinput1 * testinput2 * testinput3;});
slider3.addEventListener("change", function(){testinput = testinput1 * testinput2 * testinput3;});

document.getElementById("UI09_03").addEventListener("click", Regleractivator);

setInterval(function(){
    if (testinput == 1 && NichtBekannt.checked == false) {

        if (x1 + x2 + x3 < 21 || x1 + x2 + x3 > 24) {alert("Die Summe entspricht nicht etwa 100%.");};
    }  
}, 100);

function Regleractivator() {
    if (NichtBekannt.checked) {
        alert("Nicht bekannt gewählt");
        slider1.value = -9;
        slider2.value = -9;
        slider3.value = -9;
        slider1.disabled = true;
        slider2.disabled = true;
        slider3.disabled = true;
    } else {
        alert("Nicht bekannt nicht gewählt");
        slider1.value = x1;
        slider2.value = x2;
        slider3.value = x3;
        slider1.disabled = false;
        slider2.disabled = false;
        slider3.disabled = false;
    }
}
</script>


Der Code funktioniert leider nicht und ich kriege den Fehler "slider1 is undefined". Ich hab viel gesucht und versucht, das Problem zu beheben. Trotzdem kein Erfolg.
Vielleicht wüssten Sie wo der Fehler liegt?

Hier können Sie auch den Pretest sehen. Die Frage ist auf Seite 2:
https://www.soscisurvey.de/mehrwertbefragung/?act=G29BFT85Sm6cjxiGkN9JuXf7

Vielen Dank im Voraus!

P.s. Ich möchte nicht die Funktion für die konstante Summe für die drei Regler benutzen. Manche Tester fanden das ein bisschen kompliziert.
by SoSci Survey (302k points)
> slider1 is undefined

Der folgende Code...

> var slider1 = SoSciSliders.getSlider("UI10_01");

... funktioniert erst, nachdem die Seite geladen wurde. Sie könnten also z.B. all Ihren Code wie folgt nach dem Laden der Seite ausführen:

window.addEventListener("load", function() {
  // Hier Ihr Code wie gehabt
});

Ansonsten würde ich Sie bitten, eine neue Frage hierzu im Online-Support zu stellen. In den Kommentaren kann man Code nicht richtig formatieren und es wird schnell unübersichtlich. Danke.
by s150563 (140 points)
Vielen herzlichen Dank! Das hat das Problem mit "undefined" gelöst.

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

...