• 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">