尝试使用Javascript创建一个累积分数并呈现一个实验的总分

  • 本文关键字:一个 实验 Javascript 创建 javascript
  • 更新时间 :
  • 英文 :


我正在做一个实验,根据人们对目标的反应速度给他们打分。他们的反应越快,他们获得的积分就越多。在这种"蓝色"状态下,分数从8000分开始,他们的反应越快,他们获得的分数就越多。这些点在每次试验后显示在屏幕上。

我要创建一个新的变量,它是一个累积分数,所以在实验结束时,我可以告诉他们获得的积分。

我已经创建了这个检索变量,我想在累计总数中使用它。然而,在实验结束时,它只是显示最后计算的分数(pointConvertedBlue)并将其加倍(例如,如果有3次试验中有人获得:试验1 = 6000,试验2 = 6432,试验3 = 5690,则"总分";成为11380年).

我是一名心理学研究人员,所以我的编码技能很粗糙,所以我真的不确定如何解决这个问题。如果有人有任何建议,我将非常感激!

第一部分代码是我每次试验所需要的。这就是我试图在循环中创建累计总数的地方。

if (row.display == _requiredFeedbackDisplay) {
if (screenIndex == _requiredFeedbackScreen) {
if (row.TrialNumer >= 1 && row.TrialNumer <= 30) {
// Retrieve the reaction time from the store
var lastRT: number = gorilla.retrieve(_RTKey, null, false);
var roundedRT: number = Math.round(lastRT);
var pointConvertedBlue: number = 8000 - roundedRT;
gorilla.store(EMBEDDED_DATA, pointConvertedBlue, true);
var retrievedValue: number = gorilla.retrieve(EMBEDDED_DATA, 0, true);
if (retrievedValue != 0) {
retrievedValue += pointConvertedBlue;
}
gorilla.store(TOTAL_SCORE, retrievedValue, true);
// We now add the rounded reaction time to the screen
$(container + _requiredFeedbackZoneSelector).html(
"<h1>" +
'<p style="color: white;">' +
"You earned " +
pointConvertedBlue +
" points" +
"</p> " +
"</h1>"
);
// Using gorilla.refreshLayout here will make sure that everything is displayed nicely on the screen
gorilla.refreshLayout();
gorilla.metric({
trial_number: "pointConvertedBlue",
response: pointConvertedBlue,
});
}
}
}

下一段代码用于当我完成所有试验时,在中断屏幕上,我想显示总成绩。

if (row.display == Block_Break) {
if (screenIndex == Block_screen) {
var totalScore: number = gorilla.retrieve(TOTAL_SCORE, 0, true);
$(container + _requiredFeedbackZoneSelector3).html(
"<h1>" +
'<p style="color: white;">' +
"So far, you have earned a total of      " +
totalScore +
" points" +
"</p> " +
"</h1>"
);
gorilla.refreshLayout();
}
}

值的翻倍是存储和加载操作顺序的结果:

gorilla.store(EMBEDDED_DATA, pointConvertedBlue, true);
var retrievedValue: number = gorilla.retrieve(EMBEDDED_DATA, 0, true);
if (retrievedValue != 0) {
retrievedValue += pointConvertedBlue;
}
gorilla.store(TOTAL_SCORE, retrievedValue, true);

您将pointConvertedBlue中的最后一个分数存储在EMBEDDED_DATA中,而不是将EMBEDDED_DATA的值加载到retrievedValue中。所以最后retrievedValuepointConvertedBlue是一样的。我的猜测是,您在检索retrievedValue时不小心写成了EMBEDDED_DATA而不是TOTAL_SCORE。您可以尝试以下操作:

gorilla.store(EMBEDDED_DATA, pointConvertedBlue, true);
var retrievedValue: number = gorilla.retrieve(TOTAL_SCORE, 0, true);
if (retrievedValue != 0) {
retrievedValue += pointConvertedBlue;
}
gorilla.store(TOTAL_SCORE, retrievedValue, true);

我曾经非常简单地使用过Gorilla API,但看起来这里的问题可能是这部分代码的语义错误:

var pointConvertedBlue: number = 8000 - roundedRT;
gorilla.store(EMBEDDED_DATA, pointConvertedBlue, true);
var retrievedValue: number = gorilla.retrieve(EMBEDDED_DATA, 0, true);
if (retrievedValue != 0) {
retrievedValue += pointConvertedBlue;
}
gorilla.store(TOTAL_SCORE, retrievedValue, true);

看起来您存储了转换后的值,检索它,并将其添加到自身。如果在对值执行操作之前不需要存储值(就像对pointConvertedBlue所做的那样),可以像这样切换行:

var pointConvertedBlue: number = 8000 - roundedRT;
gorilla.store(EMBEDDED_DATA, pointConvertedBlue, true);
var totalScore: number = gorilla.retrieve(TOTAL_SCORE, 0, true);
// don't really need the conditional because gorilla.retrieve returns '0' by default according to above param.
var newTotal: number = totalScore + pointConvertedBlue
gorilla.store(TOTAL_SCORE, newTotal, true);

最新更新