2015-03-25 17 views
5

cập nhậtKhai báo mảng trống trong javascript

Mã của tôi hoạt động. Khi trang được tải

product= [[],[]]; 

sau đó mã thực thi sau khi cuộc gọi 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 
}); 

Để sử dụng eval(); trong phản ứng ajax cho điều này, với một số thay đổi trong tập tin php? /endupdate

sản phẩm [0] = [1,2,3,4];

sản phẩm [1] = [a, b, x, z];

.

.

sản phẩm [10] = [thêm, thêm, phụ, thêm];

Khi tôi tải trang này được thực thi: product= [[],[],[],[],[],[],[],[],[],[]];

Nhưng nếu tôi tuyên bố này, khi tôi gọi ajax tôi có thể đẩy thêm dữ liệu chỉ để mảng này (10 dòng) Nếu tôi có 11 dòng (product[10][0]product[10][1]), dữ liệu bổ sung sẽ không được thêm vào. Sau cuộc gọi ajax, tôi cần thêm dữ liệu : product= [[],[],[],[],[],[],[],[],[],[],**[11]**];

Chức năng này là vì tôi muốn đặt dữ liệu vào mảng sau khi tải dữ liệu ajax từ tệp php.

$('#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

Tại sao trước khi phân bổ/chiều? Tạo một mảng rỗng cơ bản '= [];' rồi '.push' cho nó trong vòng lặp khi cần –

+0

Tôi thay đổi dữ liệu sau khi gọi ajax. Lần đầu tiên tôi có 2 hàng với dữ liệu. Sau cuộc gọi, có thể có 10 hàng. – user3944364

+0

@ user3944364 Đăng mã của cuộc gọi ajax của bạn – R3tep

Trả lời

5

Trong succes của cuộc gọi ajax của bạn sử dụng chức năng push()

product.push([]); 

này sẽ thêm một mảng ở chỉ số cuối cùng của product. Như vậy, chỉ mục 10 được tạo và bạn có thêm dữ liệu.

Nếu bạn muốn thêm một số năng động của các hàng, sử dụng mã này:

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

Một cách khác

Đổi lại ajax của bạn tiết kiệm chiều dài mới của mảng của bạn product trong một biến toàn cầu. Và sử dụng nó trước khi vòng lặp của bạn để thiết lập lại mảng của bạn và khởi tạo nó với độ dài mới.

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

Và vòng lặp của bạn:

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

Tôi muốn viết lại mảng. Tôi nghĩ rằng chức năng của tôi là sai với dòng sản phẩm này [i] [lk] = lilk; . Sản phẩm Mabe [i] = [var, var, var, var]; đúng. Tôi cần phải suy nghĩ lại vòng lặp – user3944364

+0

@ user3944364 Tôi đã thêm một cách khác trong câu trả lời của mình. – R3tep

+1

Hoạt động $ ('# contextreload ul') mỗi (hàm (i, ul) { product.push ([]); }); Cảm ơn – user3944364

2

Lưu ý: dòng này của mã của bạn tạo ra một chuỗi, không phải là một mảng.

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

những gì bạn cần là một cái gì đó giống như

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

'{}' định nghĩa một đối tượng chứ không phải mảng. '[]' là thích hợp hơn – R3tep

+0

thats đúng R3tep. đó là ý tôi trên dòng thứ 2 – fedmich

1

Các mã sau đây được sử dụng để khai báo mảng trống trong javascript

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

 
console.log(product_arr);

Các vấn đề liên quan