在我进行编码的实验中,在每次试验中,我需要显示刺激(搜索阵列),然后等待最多5秒钟让受试者用按键响应。如果按下某个键,则立即开始下一次试验,或者在5秒后开始。
我只想知道我是否可以在JavaScript中编写类似的内容,如果是这样,我应该如何编写实验代码?此外,我应该能够存储按下的键的标识和时间戳。
答案 0 :(得分:0)
<script>
var timeout;
timeout = setTimeout(next, 5000); //execute function "next" after 5000 miliseconds
//With jQuery
//$("#element").on("keypress", function(){ clearTimeout(timeout); next();} );
//Without jQuery
function elementOnKeypress()
{
clearTimeout(timeout); //don't execute "next" after 5000 (or less) ms
next(); //run "next"
}
function next()
{
//your code ..
}
</script>
<element onkeypress="elementOnKeypress();"></element><!-- element is your html-element to be keypressed -->
答案 1 :(得分:0)
根据我的理解,您的实验流程如下:
为此,我会使用Keypress,一个用于捕获输入的JS库。
您首先想要定义您的刺激
例如:
var stimuli = ["Apple","Orange","Keira Knightley","Banana"];
然后,您需要设置event
个侦听器。这些将为您记录您的按键。
var listener = new window.keypress.Listener();
var results = [];
listener.simple_combo("shift s", function() {
results.push("You pressed shift and s");
});
然后你想要设置计时系统。我会使用setInterval()
函数来增加主题所在的数组中的位置。
var pos = -1; //Arrays start at 0, and you want to run this function to start.
function nextStim() {
pos = pos + 1;
myDiv.innerHTML = stimuli[pos]
}
var results = [];
listener.simple_combo("shift s", function() {
results.push("The stimulus was: " + stimuli[pos] + "And you pressed Shift + S" );
});
setInterval(nextStim,5000);