time - Javascript - register how long user pressed a given button during whole visit -
i'm programming experiment in qualtrics , need create, javascript, variable tells me how long (total) participants held down button. pressing button display text participants , releasing make text disappear, tells me how time had read text. let's press button 3 times, first 30 seconds, second 10 seconds , third 2 seconds, code should store value 42.
what have far this:
addeventlistener("keydown", function(event) { if (event.keycode == 86) document.getelementbyid("text").innerhtml = "text show"; var d1 = new date(); document.getelementbyid("div1").innerhtml = d1.gettime(); }); addeventlistener("keyup", function(event) { if (event.keycode == 86) document.getelementbyid("text").innerhtml = ""; var d2 = new data(); var d1 = parsefloat(document.getelementbyid("div1")); var diff = d2 - d1.gettime(); var old = parsefloat(document.getelementbyid("div2")); var old = old + diff; document.getelementbyid("div2").innerhtml = old; qualtrics.surveyengine.setembeddeddata("readingtime", totaltime); });
i store values in divs because can't seem reuse values 1 event listener other (this because don't know enough javascript , scopes). oh, , last function qualtrics-specific function store value in database. anyway, can't work, when check variable in database empty. can spot i'm doing wrong?
i did few changes code:
- added global variables
- added few missing brackets
- attached listeners window
- removed multiple calls dom elements
- created function each event listener
- rounded elapsed time seconds
var d0; var d1; var subtotal = 0; var total = 0; var div1 = document.getelementbyid("div1"); var text = document.getelementbyid("text"); window.addeventlistener("keydown", dealwithkeydown, false); window.addeventlistener("keyup", dealwithkeyup, false); function dealwithkeydown(event) { if (event.keycode == 86) { if (typeof d0 === 'undefined') { d0 = new date(); } d1 = new date(); subtotal = math.round((d1.gettime() - d0.gettime()) / 1000); div1.innerhtml = subtotal; text.innerhtml = "text show"; } } function dealwithkeyup(event) { if (event.keycode == 86) { total = total + subtotal; text.innerhtml = ""; d0 = undefined; qualtrics.surveyengine.setembeddeddata("readingtime", total); } }
Comments
Post a Comment