将数字字符串映射到返回 NaN 的整数

Mapping string of numbers to ints returning NaN

我有一个简单的程序,它可以获取用户的成绩并计算他们的加权成绩。我的函数接受一串成绩和 returns 一个整数数组,但一直返回 Nan。这是我的功能:

function getUserScores(subject) {
  var category;
  switch (subject) {

    case "test":
      category = document.getElementById("testGrades").value;
      category = category.split(',').map(function(item) { 
        return parseInt(item, 10);
      });

    case "quiz":
      category = document.getElementById("quizGrades").value;
      category = category.split(',').map(function(item){
        return parseInt(item, 10);
      });

    case "homework":
      category = document.getElementById("homeworkGrades").value;
      category = category.split(',').map(function(item){
        return parseInt(item, 10);
      });

    default:
      return "Error: something went wrong with switch statement";
  }  
}

因此,如果我用 getUserScores("test") 调用它,它会获取 testGrades 值,即 "96, 92, 94" 和 returns NaN 而不是 [96, 92, 94]?我在这里做错了什么?

您需要在每个案例中添加一个中断,以及 return 类别

function getUserScores(subject) {
  var category;
  switch (subject) {

    case "test":
      category = document.getElementById("testGrades").value;
      category = category.split(',').map(function(item) { 
        return parseInt(item, 10);
      });
      break;
    case "quiz":
      category = document.getElementById("quizGrades").value;
      category = category.split(',').map(function(item){
        return parseInt(item, 10);
      });
      break;
    case "homework":
      category = document.getElementById("homeworkGrades").value;
      category = category.split(',').map(function(item){
        return parseInt(item, 10);
      });
      break;
    default:
      return "Error: something went wrong with switch statement";
  }
  return category;
}

此外,请确保您正在获取所需的值,选择器可以正确使用:

category = document.getElementById("testGrades").value;
// add a console.log to test it
console.log(category);

或者,完全删除 switch 语句:

function getUserScores(subject) {
    var ele = document.getElementById(subject + "Grades");
    if (ele === null) {
        return null;
    }

    var category = ele.value;
    category = category.split(',').map(function(item) { 
        return parseInt(item, 10);
    });

    return category;  
}

为了确保当元素不存在时代码不会中断,我 return nullgetElementById 找不到任何东西时。