控制台说JavaScript数组是未定义的,但我'我可以记录它的内容
Console says JavaScript array is undefined, but I'm able to log its contents
我有一个数组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 () { ... });
当您登录控制台时,gradesArray
已超出范围。如果需要,请尝试在全局范围内声明它。
相关文章:
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 我可以获得相对于被点击元素的确切点击位置吗
- 我可以更改剑道UI网格吗's的外键值
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 在Angular中,我可以从模板url中截取内容吗
- 我可以使此幻灯片图像自动播放吗?
- 我可以通过JQuery将CSS类交换为一个特殊的元素集吗
- JavaScript-为什么我可以在数组中设置键
- 我可以在Nodewebkit中保护javascript以外的资源吗
- 我可以通过点击html文件中的按钮来记录我的屏幕/网页吗
- 我可以通过javascript获取页面访问者的完整浏览器历史记录吗?
- 控制台说JavaScript数组是未定义的,但我'我可以记录它的内容
- 我可以用javascript扩展控制台对象(用于重新路由日志记录)吗
- 在angularjs中,我如何记录异常和stacktrace,用户可以在生产中使用
- 我可以记录吗?从url写入
- 我可以强制删除历史记录中的页面吗?
- JsDoc:我如何记录一个对象可以具有arbitrary(未知)属性,但具有特定类型
- 我可以阻止Chrome开发人员工具控制台记录图像404错误吗?