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'); 
  }
}

这将验证course. Array否则,当您测试时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 回答