0

前の質問のアドバイスに従って、配列に値を追加するプロンプトを表示しましたが、そうでないときにプログラムが True 値をスローする原因になりました。

HIGHEST_GRADE = 7;
LOWEST_GRADE = 0;

var course = new Array();
var grade = new Array();

while(confirm("Would you like to add a course?")){
    course.push( prompt("Enter the course code. Example - ABC1234") );
};

var upperTest = course.slice(0,3);
var integerTest = course.slice(4,7);

if (course.length !== 7) {
    alert ('Invalid Course Code');
}

if (upperTest !== upperTest.toUpperCase()) {
     alert ('Invalid Course Code');
}

if (isNaN(integerTest)) {
    alert('Invalid Course Code'); 
}

if (isNaN(grade)) {
    alert('Invalid Grade');
}

if (LOWEST_GRADE > grade || HIGHEST_GRADE < grade) {
    alert('Invalid Grade');
}       

入力されたテキストが条件に一致することを確認するように設定していますが、.push が追加されたため、すべてが詰まっています。

無効なコース コード エラーが表示されます。何か問題が発生しています。

4

2 に答える 2

1

Array複数のコースを保存するために使用されますが、これは問題ありません。ただし、これは配列であるため、ループを使用して個々のコースを検証するために各位置にアクセスする必要があります。

var courses = new Array();  // use the name courses instead, to indicate that it's a collection

for (var i = 0; i < courses.length; i++) {
  var course = courses[i];

  var upperTest = course.slice(0,3);
  var integerTest = course.slice(4,7);

  if (course.length !== 7) {
    alert ('Invalid Course Code');
  }

  if (upperTest !== upperTest.toUpperCase()) {
    alert ('Invalid Course Code');
  }

  if (isNaN(integerTest)) {
    alert('Invalid Course Code'); 
  }
}

これにより、にあるすべてが検証さcourseArrayます。そうしないと、 をテストするときに、各コースの文字数ではなくcourses.length、配列内の要素数を検証することになります。

grades配列についても同じことが必要です。

于 2012-08-31T12:31:42.597 に答える
0

入力したコースコードを検証しますか? そのような場合、配列全体ではなくアイテムでそれを行う必要があります:

while (confirm("...")) {
  var courseCode = prompt("...");

  var upperTest = course.slice(0,3);
  var integerTest = course.slice(4,7);

  if (courseCode.length !== 7) {
    alert ('Invalid Course Code');
    continue;
  }

  // place your other if's here

  courses.push(courseCode);
}
于 2012-08-31T12:33:11.533 に答える