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 liebes Sosci Survey Team,

ich möchte einen EventListener in Form eines KeyDown-Befehls ausführen. Das Ereignis (KeyDown) soll jedoch nur verzeichnet werden, wenn entweder die Taste "Y" der Tastatur (Keycode = 78) oder die Taste "N" (Keycode = 89) bedient wurde. Leider scheine ich die if-Funktion falsch in meinen Befehl (der an sich funktioniert) einzubinden, denn nun funktioniert es nicht mehr.

Hier der Code:

<script>

window.addEventListener("load", function() {
performance.mark("complete");
});
addEventListener("keydown", function() { if(code == 78) or if(code == 89) 
 } {					
performance.mark("mess1");		// Setzen des Messpunktes 2
performance.measure("differenz1", "complete", "mess1");	// Variablenvergabe, Variable heisst Messpunkte, und es werden alle "marks" automatisch benannt
var messpunkte = performance.getEntriesByType("mark");
var messdifferenzen = performance.getEntriesByType("measure"); // Variablenvergabe, Variable heisst Messdifferenzen, und es werden alle "measures" automatisch benannt
var input = document.getElementById("IV01_02");
input.value = messdifferenzen[0].duration;
console.log(messdifferenzen);
});

</script>

Vielen Dank im Voraus, Daniel :)

in SoSci Survey (dt.) by s066509 (130 points)
Mein Java Script ist eher mittelmäßig, aber die Syntax für eine if/or Bedingung ist meines Wissens nach folgendermaßen: if (A || B). Also OR ist || und du musst nicht zweimal if schreiben. Falls es sonst Fehlermeldungen gibt wären die natürlich auch hilfreich.

Code:
if (code == 78 || code == 89)
Vielen Dank erst einmal für die schnelle Antwort :)
Ich habe die von Ihnen vorgeschlagene Anpassung vorgenommen doch leider erfolgt in meiner internen Variable immer noch keine Zeitmessung (Differenzberechnung von dem Moment ab dem die Seite geladen hat, bis entweder die Taste "Y" oder "N" bedient wurde). Es tauchen im Pretest aber auch keine Fehlermeldungen auf, was jedoch daran liegen könnte, dass es scheinbar ein Problem beim Auslesen der Zeit in meiner interenen Variable gibt, diese spezifische Zeitmessung an sich aber nichts ist, was Soci Survey als eine feste Fuktion "vorsieht"?

LG Daniel

1 Answer

0 votes

Ich habe Ihren Code einmal sauber formatiert:

<script>
window.addEventListener("load", function() {
  performance.mark("complete");
});

addEventListener("keydown", function() {
    if(code == 78) or if(code == 89) 
  }

  {					
    performance.mark("mess1");		// Setzen des Messpunktes 2
    performance.measure("differenz1", "complete", "mess1");	
    var messpunkte = performance.getEntriesByType("mark");
    var messdifferenzen = performance.getEntriesByType("measure");
    var input = document.getElementById("IV01_02");
    input.value = messdifferenzen[0].duration;
    console.log(messdifferenzen);
  }
);
</script>

Die Funktion, die beim keydown aufgerufen wird, endet mit dem } schon nach der Prüfung des Key-Code. Mal abgesehen davon, dass Sie die Variable code gar nicht definieren und dass beim IF die rundn Klammern nicht korrekt gesetzt sind. Ich denke, Sie möchten es eher so schreiben:

<script>
window.addEventListener("load", function() {
  performance.mark("complete");
});

addEventListener("keydown", function(evt) {
    var code = evt.keyCode;
    if ((code == 78) or if(code == 89)) {
      performance.mark("mess1");
      // ...

Werfen Sie bitte auch einen Blick in die Fehlerkonsole des Browsers - dort werden zahlreiche fehler direkt moniert.

by SoSci Survey (85.6k points)
...