0 votes
in SoSci Survey (dt.) by s050373 (110 points)

Liebes SoSci Survey-Team

Ich habe folgende Frage zu JavaScript und wäre sehr dankbar, wenn Sie mir da allenfalls weiterhelfen könnten.

Ich möchte gerne den Balloon Analogue Risk Task (BART) auf SoSci Survey implementieren – die Vorlage habe ich hier gefunden:
https://timo.gnambs.at/research/bart

Ich habe die entsprechenden Dateien (Code + Sound) auf SoSci Survey hinterlegt und kann das Ganze auch problemlos ausführen.
Allerdings schaffe ich es leider partout nicht, Informationen aus dem Task zu speichern...

Auf SoSci Survey ist das Ganze so als Textbaustein hinterlegt:

<center>

<script type="text/javascript" src="jquery-3.0.0.min.js"></script>   <!-- basic javascript library for dom manipulation -->
<script type="text/javascript" src="jcanvas.min.js"></script>          <!-- the canvas plugin -->
<script type="text/javascript" src="jquery.bart.js"></script>       <!-- the main BART plugin -->
<link rel="stylesheet" type="text/css" href="jquery.bart.css" />    <!-- additional styles for to make the BART look fancy -->

<div id="bart"></div>

<script type="text/javascript">
</script>

<script type="text/javascript">
            $(document).ready(function() {   // initialize the BART after the page has loaded
            });
</script>

<script type="text/javascript">
            $(document).ready(function() {   // initialize the BART after the page has loaded
                        // create a BART with 5 balloons
                        $("#bart").bart( { b: 5,                       // create 5 balloons
                                                  o: { color: 'green',        // color of balloons
                                                           earnings: 1,           // points earned for each pump
                                                           popprob: 128,           // probability of popping; defined as 1 out of popprop
                                                      },
                                                   s: { frmids_pumps: ['pump1', 'pump2', 'pump3', 'pump4', 'pump5'],    // IDs for hidden form elements used to save the number of pumps for a given balloon
                                                           frmids_exploded: ['expl1', 'expl2', 'expl3', 'expl4', 'expl5'], // IDs for hidden form elements used to save whether a balloon exploded
                                                           onend:  myend           // user-defined function invoked after finishing the BART
                                                           }
                                                 } );
            });
// user-defined function invoked after finishing the BART
                        var myend = function() {
                                    var points = 0;
                                    for(var i = 1; i <= 5; i++) { // run over all balloons
                                               if(Number($('#expl' + i).attr('value')) == 0) {
                                                           points = points + Number($('#pump' + i).attr('value')) // get information saved to the hidden form element
                                               }
                                    }
                                    alert('Sie haben ' + points + ' Punkte erreicht.');
                        }
</script>
</center>

Für SoSci Survey wird hier ja erklärt, wie man interne Variablen mit JavaScript verschalten können sollte: https://www.soscisurvey.de/help/doku.php/de:create:inputs-custom

Da ich mich mit JavaScript aber leider gar nicht auskenne, fahren alle "Lösungen" bisher gegen die Wand. In jedem Fall habe ich eine interne Variable «RA01_01» gebildet, rufe diese auf der entsprechenden Seite des Fragebogens auf und würde in diese nun gerne die Anzahl der Pumpversuche, also points, ablegen.

Können Sie mir da allenfalls helfen?

Mit bestem Dank und besten Grüssen

1 Answer

0 votes
by SoSci Survey (307k points)

würde in diese nun gerne die Anzahl der Pumpversuche, also points, ablegen.

Die Herausforderung bei JavaScript ist oftmals, dass man den richtigen Auslöser (Event) finden muss, damit etwas passiert. Da bietet sich z.B. die folgende Stelle an:

alert('Sie haben ' + points + ' Punkte erreicht.');

Dort haben wir den Wert, den Sie im Datensatz haben möchten. Ergänzen Sie direkt darunter doch einmal folgendes:

document.getElementById("RA01_01").value = points;

Dann wird in dem Moment, wo die Meldung angezeigt wird der Wert auch in die interne Variable geschrieben. Voraussetzung dafür ist natürlich, dass Sie die Frage RA01 auch auf die Fragebogen-Seite ziehen.

Wenn es damit noch nicht klappt, posten Sie doch bitte einen Pretest-Link direkt (!) zur betroffenen Fragebogen-Seite.

by s050373 (110 points)
Sie haben mir gerade den Tag gerettet, nachdem ich nun schon einige Stunden an diesem Problem verloren habe -- Ihre Lösung funktioniert wunderbar.

Haben Sie vielen Dank für Ihre schnelle Hilfe.

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

...