0 votes
in SoSci Survey (dt.) by s109850 (245 points)

Bislang habe ich den Übungsversuch erstellt, welcher aus 26 Items besteht. Das Versuchsdesign sieht im Detail wie folgt aus:

Jeder Durchlauf beginnt mit einem Fixationskreuz für 750 ms. Nach 500 ms erscheinen die Wörter DU bzw. ER/SIE. Wieder 500 ms später soll eine Zahl von 0 bis 3 für 750 ms gezeigt werden. Anschließend wird das Item (Bild) gezeigt. Per Tastendruck soll eine ja/nein Entscheidung getroffen werden. Wenn keine Antwort gegeben wird, soll der nächste Durchgang nach 2000 ms beginnen. Die Kombination von Wort plus Zahl plus Item wurde im Vorfeld festgelegt und darf nicht verändert werden.

Insgesamt soll der Test aus 4 Blöcken zu je 52 Items/Durchläufen bestehen + der Übungsdurchlauf mit 26 Items/Durchläufen.

by SoSci Survey (304k points)
Geben Sie mir bitte 1-2 Tage Zeit - ich muss mir den Code der Zuordnungsaufgabe nochmal genau ansehen und überlegen, wie sich das am besten unterbringen lässt.
by s109850 (245 points)
Alles klar, vielen lieben Dank im Voraus! :)

1 Answer

0 votes
by SoSci Survey (304k points)

So ... nun hat es doch ein klein wenig länger gedauert. Danke für die Geduld.

Die Zuordnungsaufgabe bietet ja die Möglichkeit, ein Fixationskreuz anzuzeigen. In der Frage kann man bei der Ablaufsteuerung für die Fixation eine Zeit angeben - in Ihrem Fall 1750ms = 750ms + 500ms + 500ms.

Alles Weitere habe ich aufgrund des Umfangs in der Anleitung ergänzt:
https://www.soscisurvey.de/help/doku.php/de:create:questions:assignment#mehrstufiges_priming

by s109850 (245 points)
Vielen lieben Dank für die ausführliche Beantwortung!!! Ich habe nur noch ein kleines Problem. Zwischen den Primes sollen Pausen sein. Das hatte ich wohl in meiner Frage nicht hervorgehoben.

750ms Fixationskreuz + 500ms Pause/Blank + 750ms DU/ER/SIE + 500ms Pause/Blank + 750ms Zahl = 3250ms

Bei den Stimuli handelt es sich um Bilder, die ich mittels html code eingebunden habe. Nun bin ich mir nicht sicher, wo ich im java script die Verbindung zwischen Stimulus und Primes eingebe bzw. mit welcher Kennung. Anstelle von "i", i1, i2, etc.?
by SoSci Survey (304k points)
Wie man ein Bild einbindet, sehen Sie im Prinzip beim ersten Teil: Das FIxationskreuz wird einfach als Bild eingebunden.

Wenn Sie das innerHTML auf den leeren String ("") setzen, dann ist der Bereich wieder weiß.

Also ganz einfach: Sie verlängern die "Fixation" von 1750 auf 3x750+2x500 = 3250 ms und machen dann 5 statt 3 Schritte im unteren Teil der Methode. Bei 2 der Schritte entfernen Sie den Inhalt durch setzen des leeren Strings.

>  Nun bin ich mir nicht sicher, wo ich im java script die Verbindung zwischen Stimulus und Primes eingebe bzw. mit welcher Kennung. Anstelle von "i", i1, i2, etc.?

Naja, dort können Sie statt dem "ER" einfach den Bild-Namen eingeben und dann im JavaScript anstatt

pause.innerHTML =  show[0];

eben

pause.innerHTML =  '<img src="' + show[0] + '">';

Es kann sein, dass SoSci Survey beim Speichern über invaliden HTML-Code jammert, aber das liegt nur daran, weil es kein JavaScript erwartet.

Eine Kleinigkeit noch: Sie sollten die BIlder vorab laden, damit die Zeiten ungefähr passen. Schreiben Sie dafür zu Beginn des JavaScript-Codes noch

var preload1 = new Image(); preload1.src = "bild1.png";

Und das für alle verwendeten Bilder (es sind 6, oder?)
by s109850 (245 points)
Folgendes Problem tritt nun auf, wenn ich den Task von der ersten Seite, auf der sich der PHP Code befindet, durchlaufen lasse:

"Eine vorhergehende Frage leitet den Teilnehmer automatisch zur nächsten Seite, diese Frage kann u.U. nicht beantwortet werden."

Starte ich bei der zweiten Seite scheint diese Warnung 2 mal auf:

"Für den Platzhalter %qst% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt."

Auch werden nur das Fixationskreuz und das Bild-Item angezeigt.

Mein Script sieht wie folgt aus:


<script type="text/javascript">
<!--
 
var preload1 = new Image(); preload1.src = "pro://S1_O1_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O2_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O3_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S1_O1_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O2_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O3_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S1_O1_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O2_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O3_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S1_O1_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O2_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O3_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S1_O0_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O0_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O2_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O0_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O0_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O1_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O1_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O0_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O1_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S1_O0_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S2_O1_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S3_O2_ML.jpg";
var preload1 = new Image(); preload1.src = "pro://S0_O0_MR.jpg";
var preload1 = new Image(); preload1.src = "pro://S0_O0_ML.jpg";

function AssignmentPlus(qstID, contents) {
  // Zunächst benötigen wir das HTML-Element, welches das Fixationskreuz zeigt
  var outer = document.getElementById(qstID + "_pause");
  var pause = outer.getElementsByTagName("td").item(0);
  // Eine Mindest-Höhe wäre hilfreich, damit die Knöpfe nicht "springen"
  pause.style.height = "120px";
 
  function showContent(evt) {
    // Ermitteln, welches Item gleich gezeigt wird
    var item = evt.detail.item;
    // Entsprechenden Teil aus der Liste verwenden
    var show = contents["i" + item];
 
    // Anzeigen der Inhalte nach Zeitplan
    // Zunächst (direkt) ein Fixationskreuz (750ms)
    pause.innerHTML = '<img src="../images/fixation.default.png" alt="+">';
    // Nach 750ms dann der erste Teil des Inhalts (für 500ms)
    window.setTimeout(function() {
      pause.innerHTML =  '<img src="">';
    }, 750);
    // Nach weiteren 500ms (insg. also nach 1250ms) der zweite Teil des Inhalts (für 750ms)
    window.setTimeout(function() {
      pause.innerHTML =  show[0];
    }, 1250);
    // Nach 2000ms dann der dritte Teil des Inhalts (für 500ms)
    window.setTimeout(function() {
      pause.innerHTML =  '<img src="">';
    }, 2000);
    // Nach 2500ms dann der vierte Teil des Inhalts (für 750ms)
    window.setTimeout(function() {
      pause.innerHTML =  show[1];
    }, 2500);
    // Weiter zum Item geht es dann nach 2500+750 = 3250ms
    // Das ist die Gesamtdauer für die Fixation (in der Frage einzustellen)
  }
 
  // Aufruf der Methode bei jeder Fixations-Pause
  %qst%_qst.addEventListener("fixation", showContent);
}
 
// Initialisieren der AssignmentPlus Instanz
SoSciTools.attachEvent(window, "load", function() {
    // Inhalte, welche bei den einzelnen Items gezeigt werden sollen
    // (auch hier können Platzhalter zum Einsatz kommen)
    new AssignmentPlus("%qst%", {
      pro://S1_O1_MR.jpg : ["ER", "1"]
      pro://S2_O2_ML.jpg : ["ER", "2"]
      pro://S3_O3_ML.jpg : ["ER", "3"]
      pro://S1_O1_ML.jpg : ["DU", "1"]
      pro://S2_O2_MR.jpg : ["DU", "2"]
      pro://S3_O3_MR.jpg : ["DU", "3"]
      pro://S1_O1_ML.jpg : ["ER", "2"]
      pro://S2_O2_MR.jpg : ["ER", "3"]
      pro://S3_O3_MR.jpg : ["ER", "1"]
      pro://S1_O1_MR.jpg : ["DU", "3"]
      pro://S2_O2_ML.jpg : ["DU", "1"]
      pro://S3_O3_ML.jpg : ["DU", "2"]
      pro://S1_O0_ML.jpg : ["ER", "0"]
      pro://S2_O0_MR.jpg : ["ER", "0"]
      pro://S3_O2_MR.jpg : ["ER", "2"]
      pro://S2_O0_ML.jpg : ["DU", "2"]
      pro://S3_O0_ML.jpg : ["DU", "3"]
      pro://S3_O1_MR.jpg : ["DU", "3"]
      pro://S2_O1_ML.jpg : ["ER", "2"]
      pro://S3_O0_MR.jpg : ["ER", "3"]
      pro://S3_O1_ML.jpg : ["ER", "3"]
      pro://S1_O0_MR.jpg : ["DU", "0"]
      pro://S2_O1_MR.jpg : ["DU", "1"]
      pro://S3_O2_ML.jpg : ["DU", "2"]
      pro://S0_O0_MR.jpg : ["ER", "3"]
      pro://S0_O0_ML.jpg : ["DU", "2"]
    });
});
 
// -->
</script>
by SoSci Survey (304k points)
> "Für den Platzhalter %qst% wurde weder ein Eingabefeld mit prepare_input()
> vorbereitet, noch ein Inhalt mit replace() festgelegt."

Haben Sie den JavaScript-Code, wie in der Anleitug empfohlen, mittels PHP-Code show() in den Fragebogen eingebunden? Sonst kann es mit dem Platzhalter %qst% nicht funktionieren bzw. sonst müssen Sie diesen per replace() gesondert setzen.

    new AssignmentPlus("%qst%", {
      pro://S1_O1_MR.jpg : ["ER", "1"]

Da müssten Sie sich bitte an das Format halten, wie vorgegeben, also

    new AssignmentPlus("%qst%", {
      i1: ["pro://S1_O1_MR.jpg", "ER", "1"]

Vorne steht "i" plus eine Nummer für das Item. Hinten stehen die Inhalte, die eingefügt werden sollen. Ob die geschützte Dateiablage (pro://) direkt funktioniert, da bin ich unsicher.
by s109850 (245 points)
Das Format habe ich nun geändert. Auf der ersten Seite ist folgender PHP-Code eingebunden:

show('H101');
show('H102', array(
  '%qst%' => 'H101'
));

Auf der der zweiten Seite befinden sich die Zuordnungsaufgabe und das Java-Script.
by SoSci Survey (304k points)
> Auf der der zweiten Seite befinden sich die Zuordnungsaufgabe und das Java-Script.

Dann entfernen Sie bitte die zweite Seite :)

Das show() - wie auch das question() - sind äquivalent zum "Hineinziehen" von Inhalten auf die Seite.
by s109850 (245 points)
Leider ändert sich auch nach dem Entfernen der zweiten Seite nichts :/
Beim Start erscheint erneut der Hinweis "Eine vorhergehende Frage leitet den Teilnehmer automatisch zur nächsten Seite, diese Frage kann u.U. nicht beantwortet werden." - wobei dies ja der Fall sein kann und somit nicht problematisch ist denke ich.

Jedoch wird weiterhin lediglich das Fixationskreuz sowie das Item-Bild angezeigt.
by SoSci Survey (304k points)
> Beim Start erscheint erneut der Hinweis "Eine vorhergehende Frage leitet den Teilnehmer automatisch zur nächsten Seite, diese Frage kann u.U. nicht beantwortet werden."

Ähm ja ... diesen Hinweis können Sie getrost ignorieren. SoSci Survey nimmt den Unterschied zwischen Fragen (H101) und Texten (H102) nicht so ernst und denkt, dass da noch eine Frage unter H101 kommt. Das wäre dann natürlich nicht so sinnvoll, daher die Warnung.

> Jedoch wird weiterhin lediglich das Fixationskreuz sowie das Item-Bild angezeigt.

Möchten Sie vielleicht mal einen Pretest-Link zur ersten Seite posten? Womöglich hat sich ein kleiner Fehler in das JavaScript eingeschlichen, der nun die komplette Ausführung blockiert.
https://www.soscisurvey.de/help/doku.php/de:survey:pretest
by SoSci Survey (304k points)
Die JavaScript-Konsole im Browser moniert:

> SyntaxError: missing ] after element list

Gut, zugegeben - nachdem Sie die Quelldaten aller Bilder direkt ins JavaScript geschrieben haben, muss man nach dem Fehler eine ganze Weile suchen. Aber hier ist er:

> orwj6EKKKKAP/Z" "DU", "3"],

Einfach nur ein fehlendes Komma vor dem "DU" :)
by s109850 (245 points)
Wie ließe sich das vereinfachen mit dem Quelltext? :)
Denn dieser wird denk ich nun angezeigt beim Durchlaufen des Tests bzw. erscheint der Perspektiven-Cue, aber keine Zahl sondern irgendetwas mit image/jpeg ...
by SoSci Survey (304k points)
Sie schreiben im JavaScript:

pause.innerHTML =  show[0];

Im ersten Feld in Ihrem Array steht die Data-URI Ihrer Grafik. Das heißt, genau diese wird nunals Text angezeigt. Ich denke, Sie wollten eigentlich das hier:

pause.innerHTML =  '<img src="' + show[0] + '">';

> Wie ließe sich das vereinfachen mit dem Quelltext? :)

Laden Sie die Bilder regulär ins Porjektverzeichnis hoch und tragen Sie statt der Data-URI nur den Dateinamen der Bilder an. In diesem Fall, wie schon geschrieben, empfehle ich ein Preload für die Bilder im JavaScript. Damit die Ladezeiten nicht die Präsentation verzerren.
by s109850 (245 points)
Es klappt! Tausend Dank für die Hilfe! :)
Zwei Fragen hätte ich dazu allerdings noch, ist es möglich, die Präsentation des Fixationskreuzes und der Primes in der Mitte des Bildschirms und größer anzuzeigen? Da die Item-Bilder doch eher groß und mittig angezeigt werden.

Und reicht für eine Randomisierung der Items + Primes die Einstellung bei Texts und Layout Reihenfolge Stimuli "Zufällig rotieren/mischen"?
by SoSci Survey (304k points)
> Zwei Fragen hätte ich dazu allerdings noch, ist es möglich, die Präsentation des Fixationskreuzes und der Primes in der Mitte des Bildschirms und größer anzuzeigen? Da die Item-Bilder doch eher groß und mittig angezeigt werden.

Sie können in der Frage eine Mindest-Höhe für die Anzeige des Stimulus angeben. Tragen Sie hier bitte die Höhe Ihrer Bilder ein. Dann sollte alles zentriert erscheinen und nichts mehr springen.

Wenn Sie das Fixationskreuz größer haben möchten, ergänzen Sie in der JavaScript-Zeile mit dem Fixationskreuz bitte eine Größenangabe:

pause.innerHTML = '<img src="../images/fixation.default.png" alt="+" style="width: 400px">';

> Und reicht für eine Randomisierung der Items + Primes die Einstellung bei Texts und Layout Reihenfolge Stimuli "Zufällig rotieren/mischen"?

Wenn die Items und Primes immer gemeinsam rotiert werden sollen, dann ist es so einfach, ja :) Aber es schadet nicht, es einmal zu testen.
by s109850 (245 points)
Juhu, das klappt soweit!
Für die Primes hätte ich nun folgendes versucht, um diese auch zu vergrößern, das hat aber nicht funktioniert:
pause.innerHTML =  '<show[0] + style="width: 300px">';
by SoSci Survey (304k points)
Nun, da fehlten m.E. noch die HTML-Elemente...

pause.innerHTML =  '<img src='" + show[0] + '" style="width: 300px">';
by s109850 (245 points)
Wenn ich im Script pause.innerHTML =  '<img src="' + show[0] + '">'; verwende, dann zeigt es mir die Primes nicht an bzw. hatte ich vorher einen Fehler bzgl. dem Array.

Daher hatte ich pause.innerHTML =  show[0]; verwendet, da es damit klappt. Im ersten Array Feld hatte ich ja zuvor die Data-URI meiner Grafik. Diese habe ich entfernt, sodass mir lediglich die Primes Perspektive + Zahl angezeigt werden.

Wenn ich nun pause.innerHTML =  '<img src='" + show[0] + '" style="width: 300px">'; verwende, werden mir wieder keine Primes angezeigt. Daher benötige ich nur den Teil show + style, aber ich Probleme mit der richtigen Zeichensetzung.
by SoSci Survey (304k points)
Die Primes waren aber schon Bilder, oder?

Wenn Sie reinen Text brauchen, dann können Sie diesen mit einem <span>-Tag formatieren:

<span style="font-size: 50px;">TEXT</span>

Wie immer gilt: Posten Sie gerne einen aktuellen Pretest-Link zur betroffenen Seite, dann werfe ich einen Blick darauf.
by s109850 (245 points)
Nein, die Primes sind der Perspektiven-Cue und die Zahl, welche im Array aufgelistet sind. Anschließend kommt das Item-Bild. Soweit funktioniert auch der Durchlauf, nur die Schrift der Primes wäre etwas größer optimal.

https://www.soscisurvey.de/test155917/?act=G1SORXu1mUv8GUnhHhkjtI1I
by SoSci Survey (304k points)
> nur die Schrift der Primes wäre etwas größer optimal.

Dann wie in meinem letzten Kommentar empfohlen. Im JavaScript-Code würde das etwa wie folgt aussehen.

pause.innerHTML =  '<span style="font-size: 50px;">' + show[0] + '</span>';
by s109850 (245 points)
Perfekt! Tausend Dank für Ihre 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

...