我有一个数组gradesArray
,可以在程序中使用console.log(gradesArray)
看到它,但是当我访问它时,在(Chrome)控制台中键入gradesArray
或gradesArray.length
或类似的东西,得到ReferenceError: gradesArray is not defined
。
这是我用Grade
对象填充数组的jQuery:
$(document).on('click', '#savegrades', saveGrade);
function saveGrade() { // grabbing data from a form
var studentClass = currentClass;
var studentName = currentStudent;
var dateStamp = $(this).parents('#gradingform').children('#date').val().replace(/-/g, "");
var teamwork = parseInt( $(this).parents('#gradingform').children('#teamwork').val() );
var participation = parseInt( $(this).parents('#gradingform').children('#participation').val() );
var punctuality = parseInt( $(this).parents('#gradingform').children('#punctuality').val() );
var professionalism = parseInt( $(this).parents('#gradingform').children('#professionalism').val() );
var timemanagement = parseInt( $(this).parents('#gradingform').children('#timemanagement').val() );
var newGrade = new Grade(studentClass, studentName, dateStamp, teamwork, participation, // create new Grade object from form values
punctuality, professionalism, timemanagement);
alert('class: ' + newGrade.studentClass + ', name: ' + newGrade.studentName + ', date: ' + newGrade.dateStamp + ', teamwork: ' + newGrade.teamwork + ', participation: ' + newGrade.participation + ', punctuality: ' + newGrade.punctuality + ', professionalism: ' + newGrade.professionalism + ', time management: ' + newGrade.timemanagement + ', total: ' + newGrade.total);
gradesArray.push(newGrade);
console.log(gradesArray);
}
此代码运行后,该
console.log(gradesArray)
位工作正常,为我提供了一个不错的Grade对象数组。但是,当我在控制台中键入gradesArray
时,出现参考错误,告诉我该变量未定义。另外,在程序的后面,我尝试使用if (typeof gradesArray != 'undefined')
,但是该功能不会触发。这是怎么回事?如果我从.js文件中请求该数组,则浏览器将记录该数组,但是如果我从控制台中请求它,则不会记录该数组。而且,即使在我用对象填充它之后,它仍然未定义,即使它们正在控制台中显示。
提前致谢。
最佳答案
您没有复制所有代码。您的代码被包装在另一个函数($(function () {})
?)中,该函数包含gradesArray的var语句。由于它不是全局变量,因此无法从控制台进行检查。最简单的方法是将var语句放在$()之外:
var gradesArray = []
$(function () { ... });