2015-03-25 10 views
5

UpdateDeklarieren leeres Array in Javascript

Mein Code, das funktioniert. Wenn Seite geladen wird

product= [[],[]]; 

dann ausgeführt, um den Code nach Ajax-Aufruf:

$('#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() zu verwenden; in Ajax Antwort dafür, mit einigen Änderungen in PHP-Datei? /endupdate

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

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

.

.

Produkt [10] = [extra, extra, extra, extra];

Wenn ich die Seite geladen werden diese ausgeführt wird: product= [[],[],[],[],[],[],[],[],[],[]];

Aber wenn ich das erklären, wenn ich Ajax-Aufruf kann ich Push Daten hinzufügen nur auf dieses Array (10 Zeilen) Wenn ich 11 Zeilen (product[10][0] und product[10][1]), die zusätzlichen Daten werden nicht hinzugefügt. Nach Ajax-Aufruf muß ich die zusätzlichen Daten : product= [[],[],[],[],[],[],[],[],[],[],**[11]**];

Diese Funktion ist, weil ich in der Anordnung nach dem Laden Ajax-Daten aus PHP-Datei setzen Daten will.

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

Warum pre-zuteilen/Dimension? Erstellen Sie ein einfaches leeres Array '= [];' dann '.Push 'nach Bedarf in der Schleife –

+0

Ich ändere die Daten nach Ajax-Aufruf. Zum ersten Mal habe ich 2 Zeilen mit Daten. Nach dem Anruf kann es 10 Zeilen geben. – user3944364

+0

@ user3944364 Poste den Code deines Ajax Anrufs – R3tep

Antwort

5

In den succes Ihrer Ajax-Aufruf verwenden, um die Funktion push()

product.push([]); 

Dieses ein Array auf dem letzten Index von product hinzufügt. So wird der Index 10 erstellt und Sie haben zusätzliche Daten.

Wenn Sie eine dynamische Anzahl von Zeilen hinzuzufügen, verwenden Sie diesen Code:

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

andere Art und Weise

In Ihrer Ajax-Rückkehr die neue Länge des Arrays speichern product in eine globale Variable. Und verwenden Sie es vor Ihrer Schleife, um Ihr Array zurückzusetzen und es mit der neuen Länge zu initialisieren.

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

Und Ihre Schleife:

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

Ich möchte das Array neu schreiben. Ich denke meine Funktion ist falsch mit dieser Linie Produkt [i] [lk] = lilk; . Mabe Produkt [i] = [var, var, var, var]; ist richtig. Ich muss die Schleife überdenken – user3944364

+0

@ user3944364 Ich fügte einen anderen Weg in meiner Antwort hinzu. – R3tep

+1

Works $ ('# contracereload ul'). Je (Funktion (i, ul) { product.push ([]); }); Danke – user3944364

2

Hinweis: Diese Zeile des Codes erzeugt einen String, kein Array.

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

, was Sie brauchen, ist so etwas wie

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

'{}' definiert ein Objekt und kein Array. '[]' ist passender – R3tep

+0

das ist richtig R3tep. das meinte ich in der 2. Zeile – fedmich

1

Der folgende Code verwendet, um in Javascript leeren Array zu deklarieren

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

 
console.log(product_arr);