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

Hallo Zusammen,

Kurz zum Vorhaben:
Ich möchte die *Reaktionszeiten der Probandinnen bei der Beantwortung mehrerer Items eines Fragebogens erfassen. Dafür habe ich eine interne Variable angelegt und einen latency timer** definiert. Dafür habe ich den Html Code der Instruktionsseite zu latency timer kopiert:


window.addEventListener("load", function() {

var timer = new LatencyTimer();
for (var i=1; i<=11; I++) {
    var item = s2.FB17.item(i);
    var internal = s2.IV01.item(i);
    timer.registerItem(item, internal);
}

}

Das Problem:

Auch nach diversen Variationen im Code werden aber leider keine Zeiten in die interne Variable aufgezeichnet (missing answer für die interne Variable, siehe Bilder) und die Interne Variable folglich nicht in den erhobenen Datensatz kopiert. In SociSurvey und Programmieren bin ich leider noch relativ neu, weiß hier deswegen leider nicht weiter. Ich habe die beteiligten Variablen unten abfotografiert.

Ich würd mich freuen wenn hier jemand einen Lösungsvorschlag hat.
Danke schon jetzt für die Hilfe und das Engagement.

Liebe Grüße,

Nachfolgend die Bilder zum Problem:

by SoSci Survey (306k points)
by s237262 (140 points)
In der Konsole wird angezeigt: "Syntax Error unexpected end of script (anonyme Funktion).
Als Quelle wird die letzte Zeile des folgenden Codes markiert (</script>):  


<!-- begin page(786382-21) -->


<!-- begin question(IV01) -->
<div class="SoSciDebug question">
                    <div class="container">
                        <div class="ballot"></div>
                        <div class="box">
                            <div class="label">IV01</div>
<div class="desc">Reaktionszeit</div>
<div id="notes_IV01" class="box notes shadow empty" contentEditable="true">

</div>
</div>
                    </div>
                    <!-- TODO: Variables per question (debug only) -->
                </div>
<div id="IV01_qst">
<input id="IV01_01" name="IV01_01" type="hidden" class="s2jsInternal">
<input id="IV01_02" name="IV01_02" type="hidden" class="s2jsInternal">
<input id="IV01_03" name="IV01_03" type="hidden" class="s2jsInternal">
<input id="IV01_04" name="IV01_04" type="hidden" class="s2jsInternal">
<input id="IV01_05" name="IV01_05" type="hidden" class="s2jsInternal">
<input id="IV01_06" name="IV01_06" type="hidden" class="s2jsInternal">
<input id="IV01_07" name="IV01_07" type="hidden" class="s2jsInternal">
<input id="IV01_08" name="IV01_08" type="hidden" class="s2jsInternal">
<input id="IV01_09" name="IV01_09" type="hidden" class="s2jsInternal">
<input id="IV01_10" name="IV01_10" type="hidden" class="s2jsInternal">
<input id="IV01_11" name="IV01_11" type="hidden" class="s2jsInternal">
<input id="IV01_12" name="IV01_12" type="hidden" class="s2jsInternal">
<input id="IV01_13" name="IV01_13" type="hidden" class="s2jsInternal">
</div>
<!-- end question(IV01) -->

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    for (var i=1; i<=11; I++) {
        var item = s2.FB17.item(i);
        var internal = s2.IV01.item(i);
        timer.registerItem(item, internal);
    }
}
</script>



Danke für die Hilfe
by SoSci Survey (306k points)
> Syntax Error unexpected end of script

Danke für die Details. Was Ihnen fehlt ist ein ); am Ende.

Warum? Die anonyme Funktion function() {} ist der zweite Parameter innerhalb des Funktionsaufrufs window.addEventListener("load", ...);

Wenn wenn die drei Punkte hier für die anonyme Funktion stehen, dann muss am Ende noch das ); ergänzt werden. Also

...
    }
});
</script>
by s237262 (140 points)
Super, vielen Dank! Mit dem Tipp und dem folgenden Code hat es soweit geklappt!

<script type="text/javascript">
window.addEventListener("load", function(storeFirst) {
    var timer = new LatencyTimer();
    for (var key in s2.AT30.items) {
        var item = s2.AT30.items[key];
        var itemID = item.id
        var internal = s2.IV06.item(item.id);
        timer.registerItem(item, internal);
    }
});
</script>

Allerdings zeichnet der Code die Reaktionszeiten nur ab dem ersten Klick auf der Seite auf. Die Funktion: "storefirst" und "multistorage" konnte ich dem Code allerdings noch nicht richtig zuordnen. An welcher Stelle müsste ich die beiden Parameter wie im Code einbauen?
Danke schon jetzt für die erneute Hilfe.

1 Answer

0 votes
by SoSci Survey (306k points)

Die Funktion: "storefirst" und "multistorage" konnte ich dem Code allerdings noch nicht richtig zuordnen. An welcher Stelle müsste ich die beiden Parameter wie im Code einbauen?

Sie verwenden aktuell die Methode registerItem()

timer.registerItem(item, internal);

Entsprechend gilt diese Zeile aus der LatencyTimer-Referenz:

void latencyTimer.registerItem(SoSciTools.QuestionItem|Question item, mixed storage, boolean storeFirst, mixed multiStore)

Heißt, der Parameter storeFirst wird an Position 3, der Parameter multiStore an Position 4 angegeben. Ersteres als Bool'sche Variable, also true oder false. Für zweiteres bräuchten Sie noch eine weitere interne Variable.

var internal2 = s2.IV99.item(item.id);
timer.registerItem(item, internal, true, internal2);

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

...