1

我有一个简单的程序,它可以让用户评分并计算他们的加权评分。我的函数接受一串成绩并返回一个整数数组,但一直返回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")它会获取testGradesis"96, 92, 94"并返回NaN而不是[96, 92, 94]? 我在这里做错了什么?

4

2 回答 2

2

或者,只需完全删除该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;  
}

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

于 2015-07-18T18:15:47.320 回答
0

您需要在每种情况下添加一个中断,并返回类别

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);
于 2015-07-18T18:13:01.823 回答