2015-03-25 68 views
5

更新声明空数组在javascript

我的代码工作。当页面被加载

product= [[],[]]; 

则代码AJAX调用后执行:

$('#contextreload ul').each(function(i, ul) { 
product.push([]); 
}); 

$('#contextreload ul').each(function(i, ul) { 
    allline=i; 
    $('#reloadajax'+i+' li').each(function(lk, li) { 
    var lilk = $(li).html(); product[i][lk]=lilk; 

    // your code goes here 
}); 

    // your code goes here 
}); 

使用eval();在这个Ajax响应,在PHP文件中的一些变化? /endupdate

product [0] = [1,2,3,4];

product [1] = [a,b,x,z];

product [10] = [extra,extra,extra,extra];

当我加载此执行页:product= [[],[],[],[],[],[],[],[],[],[]];

但是,如果我声明此,当我打电话AJAX我可以 只对这种阵列加数据(10行) 如果我有11行( product[10][0]product[10][1]),额外的数据将不会被添加。 Ajax调用后,我需要额外的数据 :product= [[],[],[],[],[],[],[],[],[],[],**[11]**];

此功能是因为我希望把数据在阵列之后,从PHP文件加载AJAX数据。

$('#contextreload ul').each(function(i, ul) { 
<strike> var product = $(ul).html(); </strike> 
    allline = i; 

    $('#reloadajax'+i+' li').each(function(lk, li) { 
     var lilk = $(li).html(); 
     product[i][lk]=lilk; 
     alert(lilk+lk); 
     // your code goes here 
    }); 
    // your code goes here 
}); 


} 
+1

为什么预先分配/尺寸下面的代码?根据需要在循环中创建一个基本的空数组''[];'然后'.push' – 2015-03-25 11:26:11

+0

我在ajax调用后更改了数据。第一次我有2行数据。通话后可以有10行。 – user3944364 2015-03-25 11:44:08

+0

@ user3944364发布您的ajax调用代码 – R3tep 2015-03-25 11:54:10

回答

5

在你的Ajax调用的更迭使用功能push()

product.push([]); 

这增加的product最后索引处的数组。如此,索引10已创建,并且您有额外的数据。

如果你想添加行的动态数量,使用此代码:

var number_of_new_row = 11; // 11 for example, you can use any number >= 0 
for(; number_of_new_row--;) 
    product.push([]); 

另一种方式

在你的Ajax回报保存阵列product的新长度一个全局变量。 然后在你的循环之前使用它来重置你的数组,并用新的长度初始化它。

var lengthArray = 10; // update the value in the callback of your ajax call 

而且你的循环:

var product = []; 
for(; lengthArray--;) 
    product.push([]); 

$('#contextreload ul').each(function(i, ul) { 
    //<strike> var product = $(ul).html(); </strike> 
    allline = i; 

    $('#reloadajax'+i+' li').each(function(lk, li) { 
     var lilk = $(li).html(); 
     product[i][lk]=lilk; 
     alert(lilk+lk); 
     // your code goes here 
    }); 
    // your code goes here 
}); 
+0

我想重写数组。我认为我的功能是错误的这一行产品[i] [lk] = lilk; 。 Mabe产品[i] = [var,var,var,var];是对的。我需要重新考虑循环 – user3944364 2015-03-25 12:49:33

+0

@ user3944364我在答案中添加了另一种方法。 – R3tep 2015-03-25 14:35:06

+1

Works $('#contextreload ul')。each(function(i,ul){product.push([]); });谢谢 – user3944364 2015-03-25 15:36:35

2

注:此行代码中产生一个字符串,而不是一个数组。

var product = $(ul).html(); //returns string not an array 

你需要的是像

var product_arr = {}; // an object or 
var product_arr = []; // an array 
+0

'{}'定义了一个对象而不是一个数组。 '[]'更合适 – R3tep 2015-03-25 13:05:20

+0

那就是R3tep。这就是我在第二行的意思 – fedmich 2015-03-25 16:23:01

1

使用在JavaScript中声明空数组

var product_arr = new Array(); //declaring empty array 
 

 
console.log(product_arr);