我试图在JS中创建一个多维数组,如下所示:
在我的app.js文件中,我有这个
var equipValue = new Array();
var selectedTrucks = new Array();
在我的function.js文件中,我有:
for (var i in selectedTrucks) {
(function(i){
// Simple Ajax request that return me a Json values
var ajaxUrl = '/ajaxRequest/getSingleTruckPosition/' + selectedTrucks[i];
$.ajax({
url: ajaxUrl,
})
.done(function(data) {
if(data != null){
// equipValue doens't go.
// Unable to set property '0' of undefined or null reference
equipValue[i] = jQuery.parseJSON(data);
}
});
为什么我获得:无法设置属性' 0'未定义或空引用? 为什么变量对我的function.js文件起作用,但selectedTrucks工作得很好?
谢谢你
修改
做一些测试我试过这个:
equipValue = jQuery.parseJSON(data);
那么,问题不是scoope但是在Runtime上创建多维数组?还是类似的?
**编辑2 **
问题在于:
var selectedTrucks = new Array();
// other 15 lines of codes and then this:
if(selectedTrucks === undefined || selectedTrucks.length == 0){
cleanMapMarkers();
}
为什么即使selectedTrucks为空,也始终会启动cleanMapMakers()?我发现的所有问题都在这里。 感谢
答案 0 :(得分:2)
在您的代码中,您可能正在寻找,如果selectedTrucks未定义或者它是否为空
if(selectedTrucks === undefined || selectedTrucks.length != 0){
cleanMapMarkers();
}
.done(function(data) {
if (data != null) {
equipValue[i] = data;
答案 1 :(得分:0)
for var i in *object*
用于迭代对象属性。
所以在equipValue[i]
中你似乎有equipValue['131-00004131']
equipValue = {
131-00004131: 'your data'
}