• User Attivo •

    Test reazione e calcolo del tempo su immagine

    quale funzione mi suggerisci di utilizzare per JAVASCRIPT

    vorrei far partire delle immagini al clikkare uno dei tasti Q - P, calcolare il tempo di risposta alle immagini.

    grazie


  • User Attivo •

    Non ho capito bene la natura del tuo problema!
    potresti spiegarmi meglio!??!

    Grazie!


  • User Attivo •

    vorrei sapere come posso creare un cronometro che parta dal momento in cui visualizzo una immagine, al momento in cui pigio il tasto q.
    come posso fare?

    usereste javascript o php?
    grazie


  • Consiglio Direttivo •

    Immagino sia Js, lato client non ci fai nulla con il PHP 😉


  • User Attivo •

    grazie, vada con javascript allora.
    consigli?


  • User Attivo •

    dunque, devo creare un test che registri il tempo di reazione delle persone all'apparire di alcune immagini.
    il cronometro si blocchera quando il soggetto spingera' il tasto della tastiera q o p.
    puoi aiutarmi?

    utilizzo la funzione "setTimeout()" per "gestire" il tempo, applico un listener per eventi alla pagina che individui la pressione di un tasto e infine uso la funzione "clearTimeout()" per terminare il conteggio.
    aiuto per lo script please?
    ciao grazie


  • User Attivo •

    dunque, ho trovato un cronometro, ma vorrei che mi segnalasse solo i millisecondi (senza ore e minuti) e in piu' che il cronometro si avvi con l'apertura di una immagine. come faccio?

    
    <script language="JavaScript">
     
    var timercount = 0;
    var timestart  = null;
     
    function showtimer() {
        if(timercount) {
            clearTimeout(timercount);
            clockID = 0;
        }
        if(!timestart){
            timestart = new Date();
        }
        var timeend = new Date();
        var timedifference = timeend.getTime() - timestart.getTime();
        timeend.setTime(timedifference);
     var minutes_passed = timeend.getMinutes();
     if (minutes_passed==0) minutes_passed =59;
        if(minutes_passed <10){
            minutes_passed = "0" + minutes_passed;
        } 
     var hours_passed = timeend.getHours(); // l'ora qui vale subito "1"...
        if(hours_passed <10){
            hours_passed = "0" + hours_passed;
        }
        var seconds_passed = timeend.getSeconds();
        if(seconds_passed <10){
            seconds_passed = "0" + seconds_passed;
        }
        document.timeform.timetextarea.value = hours_passed + ":" + minutes_passed + ":" + seconds_passed;
        timercount = setTimeout("showtimer()", 1000);
    }
     
    function sw_start(){
        if(!timercount){
        timestart   = new Date();
        document.timeform.timetextarea.value = "00:59:00";
        timercount  = setTimeout("showtimer()", 1000);
        }
        else{
        var timeend = new Date();
            var timedifference = timeend.getTime() - timestart.getTime();
            timeend.setTime(timedifference);
            var hours_passed = timeend.getHours();
            var minutes_passed = timeend.getMinutes();
     
      if(hours_passed <10){
                hours_passed = "0" + hours_passed;
            }
      if(minutes_passed <10){
                minutes_passed = "0" + minutes_passed;
            }
            var seconds_passed = timeend.getSeconds();
            if(seconds_passed <10){
                seconds_passed = "0" + seconds_passed;
            }
     
            var milliseconds_passed = timeend.getMilliseconds();
            if(milliseconds_passed <10){
                milliseconds_passed = "00" + milliseconds_passed;
            }
            else if(milliseconds_passed <100){
                milliseconds_passed = "0" + milliseconds_passed;
            }
        }
    }
     
    function Reset() {
        timestart = null;
        document.timeform.timetextarea.value = "00:00:00";
    }
     
    </script>
    <form name="timeform">
     Time: <input type=text name="timetextarea" value="00:00" size="10" style = "font-size:20px">
    <br>
    <br>
    <input type=button name="start" value="Start/Lap" onclick="sw_start()">
    <input type=button name="reset" value="Reset" onclick="Reset()">
    </form>
    
    

  • User Attivo •

    mi servirebbe un aiuto per aggiustare lo script:
    il cronometro funziona solo per la prima immagine e poi si blocca a 0 per le successive.
    poi vorrei che tutte le immagini partissero da sole dopo aver pigiato il bottone di reazione.
    grazie

    
    <?php
    // Qui specifica le variabili
    $dirimm = "fototest"; // Specifica la directory delle immagini
    $titolo = "Questionario"; // Il titolo della pagina
    $immg = array();
    $nimg = 0;
    $dirhan = opendir($dirimm);
    while(false !== ($fimm = readdir($dirhan))) {
    if($fimm != "." && $fimm != "..") {
    $immg[$nimg] = $dirimm."/".$fimm;
    $nimg++;
    } }
    closedir($dirhan);
    ?>
    <script type="text/javascript" language="javascript">
    var msec = 0;
    var sec = 0;
    var min = 0;
    var hour = 0;
    var frase = "";
    var nim = <?php echo count($immg); ?>;
    var nin = 0;
    var dimm = new Array();
    <?php
    foreach($immg as $key => $img) {
    $gim = getimagesize($img);
    echo "dimm[".$key."] = '<img src=\"".$img."\" ".$gim[3].">';\n";
    }
    ?>
    
    function cronometro(inp) {
    msec++;
    if(msec == 1000) { msec = 0; sec++; }
    if(msec <= 9) { msec = "000" + msec; }
    else if(msec > 9 && msec <= 99) { msec = "00" + msec; }
    else if(msec > 99 && msec <= 999) { msec = "0" + msec; }
    tou = window.setTimeout('cronometro()', 1);
    document.getElementById('cronometro').value = "1";
    }
    function reaz(num) {
    nin++;
    if(num == 1) {
    frase += "Hai reagito positivamente all'immagine";
    }
    else if(num == 0) {
    frase += "Hai reagito negativamente all'immagine";
    }
    frase += " in " + sec + "," + msec + " secondi.";
    if(nin <= nim) { frase += "<br><br><a href=\"javascript:avanti(" + nin + ")\">Vai alla prossima immagine</a>"; }
    document.getElementById('esito').innerHTML = frase;
    document.getElementById('cronometro').value = "0";
    window.clearTimeout(tou);
    }
    function avanti(num) {
    document.getElementById('divimm').innerHTML = dimm[num];
    document.getElementById('esito').innerHTML = "";
    sec = 0;
    msec = 0;
    min = 0;
    hour = 0;
    }
    function tasti() {
    // A 65 - L 76
    var tasto = window.event.keyCode;
    if(tasto == 65) { reaz(1); }
    else if(tasto == 76) { reaz(0); }
    }
    function FP_preloadImgs() {
    var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
    for(var i=0; i<a.length; i++) { d.FP_imgs*=new Image; d.FP_imgs*.src=a*; }
    }
    </script>
    <title><?php echo $titolo; ?></title>
    </head>
    <body onload="avanti(0); cronometro(document.getElementById('cronometro').value); FP_preloadImgs(<?php
    foreach($immg as $img) {
    echo "'".$img."', ";
    }
    ?>'')" onkeyup="tasti()">
    <input type="hidden" name="cronometro" id="cronometro" value="0">