2013-07-25 8 views
5

Ich versuche, eine Funktion zu erstellen, die Punkte in einer Tabelle anordnen wird wie wie im Bild gezeigt:Arrays anordnen Elemente mit JavaScript und jQuery

enter image description here

Code I ändern müssen, ist:

var rowsCount = 7; 
var heightTable = 700; 
var rowHeight = 100; 

//an array with divs with elements, every element has a top and left position 
var arrayOfDivs = [({topPosition : 99, leftPosition: 100}),({topPosition : 150, leftPosition: 400}),({topPosition : 578, leftPosition: 10})]; 

//so here create a function that will create arrays = rowCount, so here we will need 7 arrays and arrange elements from arrayOfDivs into new arrays 


function arrangeInNewArrays (rowsCont,heightTable,rowHeight) { 
    var j=0; 
    for i=0 { 
     if (arrayOfDivs.topPosition[0] > rowHeight*j < rowHeight){ 
       var array+j = array+j+arrayOfDivs[i]; 
     }else { 
       i++,j++ 
     } 
    } 

    print arrayofDivs[i]; 
} 

Irgendwelche Vorschläge? Wie kann ich Punkte für Zeile arrangieren ...

Bitte helfen Sie mir, dass ///

CODE zu tun: http://jsfiddle.net/sYq9S/9/

+0

Punkte von Tabelle für Zeilen in Arrays anordnen –

+0

http://jsfiddle.net/sYq9S/9/ –

+0

jemand legte ein Kopfgeld auf diese Frage, bevor ich antworte: D das wird nicht bald beantwortet werden, ich arbeitete mit etwas sehr ähnlich vor ein paar Monaten – pythonian29033

Antwort

0

ich glaube, Sie so etwas wie dieses verwenden:

var ROW_HEIGHT = 100; //assume 100px, but you can change this 
var rowsCount = 7; 

var rows = []; 
for(var i = 0; i < rowsCount; i++) { 
    rows[i] = []; 
} 

for(var i = 0; i < arrayOfDivs.length; i++) { 
    var position = arrayOfDivs[i]; 

    //The assumption is that the table starts at position 0. If not, you will 
    //have to subtract the table's top position from topPosition 
    var rowNumber = Math.floor(position.topPosition/ROW_HEIGHT); 
    rows[rowNumber].push(position); 
} 

Dies führt dazu, dass Divs in Zeilen gruppiert werden, basierend auf deren topPosition. Also alles, was mit 0 <= topPosition < 100 wird in row[0] (erste Zeile), alles mit 100 <= topPosition < 200 wird in row[1] (zweite Zeile) und so weiter sein.

Sie können dann über diese iterieren und sie basierend auf der leftPosition positionieren.

Dies ergibt nicht unbedingt 7 Zeilen, weil es auf die topPosition jedes Elements abhängt. Also, wenn Sie nichts haben, das eine topPosition hat, so dass dann wird nichts in der siebten Zeile sein.

Wenn Sie mit dem leftPosition innerhalb jeder der Reihen sortieren möchten, können Sie dies tun:

for(var i = 0; i < rowsCount; i++) { 
    rows[i].sort(function(a, b) { 
     return a.leftPosition - b.leftPosition; 
    }); 
} 

Here is the fiddle.

+0

Bitte zeigen Sie in einer Datei, ich sehe nicht, welche Funktion hier zurückgegeben wird. DANK –

+0

@MarkWest Die Funktion gibt 'rows' zurück. –

+0

also erstellt diese Funktion 7 neue Arrays mit Elementen innerhalb der oberen und linken Reihe [1] ({topPosition: top, leftPosition: left} {etc ...}, ... ... ... wie zu arrangieren Danach kann jede neu erstellte Array-Zeile [i] nach linker Position innerhalb des Arrays? –

Verwandte Themen