Array.push导致程序出错

时间:2012-08-31 12:28:31

标签: javascript arrays loops push prompt

我按照上一个问题的建议来获取我向数组添加值的提示,但是它导致我的程序在不存在时抛出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,所以整个事情就会结束。

我收到一个无效的课程代码错误,正在播放一些内容。

2 个答案:

答案 0 :(得分: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数组需要做同样的事情。

答案 1 :(得分: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);
}