2015-03-25 37 views
5

aktualizacjastwierdzenie pustą tablicę w javascript

mój kod, który działa. Po załadowaniu strony

product= [[],[]]; 

następnie kod wykonywany po wywołaniu 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 
}); 

Aby skorzystać z funkcji eval(); w odpowiedzi ajax dla tego, z pewnymi zmianami w pliku php? /endupdate

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

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

.

.

produkt [10] = [dodatkowy, dodatkowy, dodatkowy, dodatkowy];

Kiedy załadować stronę ten jest wykonywany: product= [[],[],[],[],[],[],[],[],[],[]];

Ale jeśli Oświadczam tego, kiedy zapytanie AJAX mogę Push dodać dane tylko do tej tablicy (10 wierszy) Jeśli mam 11 wierszy (product[10][0] i product[10][1]), dodatkowe dane nie zostaną dodane. Po wywołaniu ajax muszę dodatkowych danych : product= [[],[],[],[],[],[],[],[],[],[],**[11]**];

Funkcja ta jest, ponieważ chcę, aby umieścić dane w tablicy po ajax ładowanie danych z pliku 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

Dlaczego wstępnie przeznaczyć/wymiar? Utwórz podstawową pustą tablicę '= [];' następnie '.push' do niej w pętli w razie potrzeby –

+0

Zmieniam dane po wywołaniu ajax. Pierwszy raz mam 2 wiersze z danymi. Po zakończeniu rozmowy może być 10 wierszy. – user3944364

+0

@ user3944364 Napisz kod wywołania ajax – R3tep

Odpowiedz

5

W sukcesie rozmowy ajax użyć funkcji push()

product.push([]); 

Dodaje tablicę w ostatniej indeks product. W ten sposób tworzony jest indeks 10 i masz dodatkowe dane.

Jeśli chcesz dodać numer dynamiczny wierszy, użyj tego kodu:

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

Innym sposobem

w zeznaniu ajax zapisać nową długość tablicy product w zmienna globalna. I użyj go przed pętlą, aby zresetować tablicę i zainicjować ją na nową długość.

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

I pętla:

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

Chcę przepisać tablicę. Myślę, że moja funkcja jest nie tak z tym produktem liniowym [i] [lk] = lila; . Produkt Mabe [i] = [var, var, var, var]; jest w porządku. Muszę ponownie przemyśleć pętlę – user3944364

+0

@ user3944364 Dodałem inny sposób w mojej odpowiedzi. – R3tep

+1

Działa $ ('# contextreload ul'). Each (function (i, ul) { product.push ([]); }); Dzięki – user3944364

2

Uwaga: ta linia kodu tworzy ciąg, a nie tablicą.

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

co potrzebne jest coś

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

'{}' definiuje obiekt, a nie tablicę. '[]' jest bardziej odpowiednie – R3tep

+0

thats right R3tep. To właśnie miałem na myśli w drugiej linii – fedmich

1

Poniższy kod służy do deklarowania pustą tablicę w javascript

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

 
console.log(product_arr);