【问题标题】:Javascript array math not adding up properlyJavascript数组数学没有正确加起来
【发布时间】:2016-06-08 16:47:41
【问题描述】:

我有一个数组序列作为单个问题的分数,然后是一个数组,用于根据问题的分数将分数添加到主分数:

var totscore = 0
var subscore = 0

var _scores7 = [2, 1, 0];
var _scores8 = [3, 2, 1, 0];
var _scores9 = [3, 2, 1, 0];
var _scores10 = [2, 1, 0];
var _scores11 = [1, 0];
var _scores12 = [2, 1, 0];
var _scores13 = [2, 1, 0];

var subScores = [0, 1, 2, 3, 4, 5, 6];

然后应该根据单选按钮上的答案将问题相加:

if(document.getElementById("q7a").checked){
    subscore += _scores7[0];
} else if(document.getElementById("q7b").checked){
    subscore += _scores7[1];
} else if(document.getElementById("q7c").checked){
    subscore += _scores7[2];
} else alert("Question seven has not been finished.");

if(document.getElementById("q8a").checked){
    subscore += _scores8[0];
} else if(document.getElementById("q8b").checked){
    subscore += _scores8[1];
} else if(document.getElementById("q8c").checked){
    subscore += _scores8[2];
} else if(document.getElementById("q8d").checked){
    subscore += _scores8[3];
} else alert("Question eight has not been finished.");

if(document.getElementById("q9a").checked){
    subscore += _scores9[0];
} else if(document.getElementById("q9b").checked){
    subscore += _scores9[1];
} else if(document.getElementById("q9c").checked){
    subscore += _scores9[2];
} else if(document.getElementById("q9d").checked){
    subscore += _scores9[3];
} else alert("Question nine has not been finished.");

if(document.getElementById("q10a").checked){
    subscore += _scores10[0];
} else if(document.getElementById("q10b").checked){
    subscore += _scores10[1];
} else if(document.getElementById("q10c").checked){
    subscore += _scores10[2];
} else alert("Question ten has not been finished.");

if(document.getElementById("q11a").checked){
    subscore += _scores11[0];
} else if(document.getElementById("q11b").checked){
    subscore += _scores11[1];
} else alert("Question eleven has not been finished.");

if(document.getElementById("q12a").checked){
    subscore += _scores12[0];
} else if(document.getElementById("q12b").checked){
    subscore += _scores12[1];
} else if(document.getElementById("q12c").checked){
    subscore += _scores12[2];
} else alert("Question twelve has not been finished.");

if(document.getElementById("q13a").checked){
    subscore += _scores13[0];
} else if(document.getElementById("q13b").checked){
    subscore += _scores13[1];
} else if(document.getElementById("q13c").checked){
    subscore += _scores13[2];
} else alert("Question thirteen has not been finished.");

这里收到的分数应该会用在下面的代码中:

switch(true){
    case (subscore == 0):
        totscore += subScores[6];
        break;
    case (subscore >= 1 && subscore <= 3):
        totscore += subScores[5];
        break;
    case (subscore >= 4 && subscore <= 6):
        totscore += subScores[4];
        break;
    case (subscore >= 7 && subscore <= 8):
        totscore += subScores[3];
        break;
    case (subscore >= 9 && subscore <= 11):
        totscore += subScores[2];
        break;
    case (subscore >= 12 && subscore <= 14):
        totscore += subScores[1];
        break;
    case (subscore == 15):
        totscore += subScores[0];
        break;
    default:
        alert(subscore);

我的主要问题似乎是添加子分数并没有达到我想要的位置。

当您选择应该给您零分的答案时,您最终会得到六分。当你回答应该给你 15 分的问题时,你得零分。如果你在中间回答,你会得到三四个。

【问题讨论】:

  • 您是否已经使用调试器单步执行您的代码?
  • 我有。在控制台上,我似乎找不到任何语法错误,也没有其他任何显示。我认为它(相对)写得很好。
  • 我无法看到您期望发生的事情。你能把它减少到只有subScore7 或者8 吗?我假设subscore 从 0 开始?
  • 哦,我忘了展示这些。是的,子分数从零开始。所有问题都有不同数组的原因是每个问题的权重将来可能会改变,我认为改变它的最简单方法是给每个问题一个易于识别的数组。
  • 我的主要问题是数学没有加起来。我不明白,如果你选择与最高数字相关的答案,你会得到六个。关于 Javascript 中的数组数学,我有什么不明白的地方吗?

标签: javascript arrays math radio-button switch-statement


【解决方案1】:

我自己弄错了。

最后的switch语句默认设置为:

alert(subscore)

在 switch 语句之外没有实际的子分数警报。因此,该函数实际上正确计算了 totcore,而我将其误读为对 subscore 值的警告。

代码实际上是正确的,当我的错误出现在显示答案时,我正在寻找计算中的错误。

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多