Javascript 我怎样才能正确计算总分?

Javascript 我怎样才能正确计算总分?,javascript,Javascript,我是一名javascript学习者,正在努力为我的孩子(5到10岁)设计一款小型javascript游戏,游戏中的分数基于时间流逝。但是,我想不出一个方法来计算总分。我管理了下面的代码,但结果不准确。程序可能会在每次单击时汇总数组中的所有项。有人能帮忙吗?我是一个新手,这里会有很多错误或荒谬之处,我请求你在纠正我时礼貌地帮助我。谢谢你的帮助 document.getElementById(“box1”).onclick=function(){ clickT=Date.now(); reactT=

我是一名javascript学习者,正在努力为我的孩子(5到10岁)设计一款小型javascript游戏,游戏中的分数基于时间流逝。但是,我想不出一个方法来计算总分。我管理了下面的代码,但结果不准确。程序可能会在每次单击时汇总数组中的所有项。有人能帮忙吗?我是一个新手,这里会有很多错误或荒谬之处,我请求你在纠正我时礼貌地帮助我。谢谢你的帮助

document.getElementById(“box1”).onclick=function(){
clickT=Date.now();
reactT=(clickT-createdT)/1000;//获取反应的时间差。
点数=t*1000;
积分=2000分;
pRecord.push(点);//向数组添加点。
对于(i=0;i
只需将
totalpoints
设置为零,然后再求和积分:

document.getElementById("box1").onclick = function() {
    var clickT = Date.now();
    var reactT = (clickT - createdT) / 1000; //gets the time difference for reaction.

    var points = reactT * 1000;

    points = 2000 - points;

    pRecord.push(points); //add points to array.

    var totalpoints = 0;
    for (var i = 0; i < pRecord.length; i++){
       totalpoints += pRecord[i];
    }


    document.getElementById("time").innerHTML = reactT;
    this.style.display = "none";

    document.getElementById("score").innerHTML = totalpoints;
}
document.getElementById(“box1”).onclick=function(){
var clickT=Date.now();
var reactT=(clickT-createdT)/1000;//获取反应的时间差。
var点=反应温度*1000;
积分=2000分;
pRecord.push(点);//向数组添加点。
var totalpoints=0;
对于(变量i=0;i

另外,我不知道您是否在外部范围内定义了变量,但我猜您没有,所以我在每次创建变量之前都添加了
var

这里是一个改进版的代码,它还正确地注册了反应时间,将允许的最大反应时间限制为一个配置值

在最初的实现中,如果反应时间大于2秒,可能会得到错误的读数

另外,在您的原始代码中,您不需要先除以1000,然后再相乘,因为最终的结果是毫秒

就是这样:

document.getElementById(“box1”).addEventListener(“单击”,函数(){
clickT=Date.now();
//获取反应的时间差(毫秒)。
reactT=点击t-创建dt;
//允许的最长反应时间,在此之后,我们不再给出更多分数。
var maxPoints=2000;
//我们将记录的反应时间限制在允许的最大值。
点=数学最大值(反应,最大点);
//我们根据反应时间评分
点=最大点-点;
//向数组中添加点。
预编码推送(点);
//计算总分。
var totalpoints=0;
对于(i=0;i
您可以注意到,我已经定义了
totalpoints
变量(并用0初始化),否则,在每次单击时,您的所有分数都会被重新添加,而不仅仅是最后一个

我假设在粘贴代码之前未定义
totalpoints
。如果此假设错误,并且您之前已在代码中初始化
totalpoints
,则您需要替换我代码中的以下部分:

// Compute the total points.
var totalpoints = 0;
for (i = 0; i < pRecord.length; i++){
  totalpoints += pRecord[i];
}

您需要在循环之前设置
totalpoints=0;
,否则它将继续添加到循环中。非常感谢各位的帮助和回答。请看我下面的答案,因为我注意到您在如何注册反应点方面存在问题。是否有意记下负面分数(而不是0)当反应时间小于2秒时?是的,我实际上想减少孩子们的反应时间。是的,我实际上想减少孩子们的反应时间。但是,你的代码给了我一个新的想法。谢谢你。
// Add the new points to the total.
totalpoints += points;