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")取得され、代わりに?が返されます。ここで何が間違っていますか?testGrades"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;  
}

要素が存在しないときにコードが壊れないようにするために、何も見つからないnullときに戻ります。getElementById

于 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 に答える