使用 JsPsych,我需要为每个问题提示设置一个 10 秒的计时器,以便当时间到时,试用会立即结束并转到下一个问题。这是我的代码:
var time_limit = 10000;
var start_time2;
var end_test_timer;
var trial_count = 0;
var n_trials = questions.length;
var counter2 = 1;
var ListB_test_trial = {
timeline_variables: [
{data: questions[0], q: questions[0]},
{data: questions[1], q: questions[1]},
],
timeline: [ {
timeline: [
{type: 'survey-text',
questions: function (){
return [{prompt: '(Q' + counter2 + '/15) ' + jsPsych.timelineVariable('q', true), columns: 25, required: true}]
},
button_label: ['submit'],
data: jsPsych.timelineVariable('data'),
preamble: '<p style="font-size: 15px; line-height: 12px;">[Please answer using your own knowledge and best guess. Type your answer and press submit.]</p>',
on_load: function() {
trial_count++;
// we need to set up the timer to end the current timeline after a certain duration, but only on the first trial
if (trial_count > 0) {
start_time2 = performance.now();
var end_test_timer = setTimeout(function() {
// this stuff is just for testing
var end_time = performance.now();
var elapsed_time = end_time - start_time2;
console.log("elapsed time: ", elapsed_time);
// this function is all you need to end the current timeline
jsPsych.endCurrentTimeline();
// this function ends the current trial
jsPsych.finishTrial({status: "ended early"});
}, time_limit);
}
},
on_finish: function() {
counter2++;
// we also need to cancel the setTimeout timer if the person gets all the way through the timeline before
// time_limit is reached, otherwise endCurrentTimeline will fire during the next timeline - not good!!
if (trial_count == n_trials) {
clearTimeout(end_test_timer);
}
}
}
],
randomize_order: true,
}, get_ready ]
};
timeline.push(ListB_test_trial);
我从这里得到了代码:https ://github.com/jspsych/jsPsych/discussions/1146但不知道如何适应它。到目前为止,回答所有问题的总时间限制为 10 秒,而不是每个问题的 10 秒。
谢谢!