2013-07-25 20 views
5

Ben resimde görüldüğü gibi bir tablo noktaları düzenleyecektir bir işlevi oluşturmak çalışıyorum: Ben değiştirmeniz gerekenDiziler javascript ve jquery ile unsurlarını Yerleştir

enter image description here

Kod geçerli:

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]; 
} 

herhangi bir öneriniz? Nasıl

yapmamı yardım edin ... satıra puan sağlayabilir /// olduğunu

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

+0

dizilerdeki satırlara göre tablodan puanları ayarlama –

+0

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

+0

Birisi cevap vermeden önce bu soruya bir lütuf koyar: D Bu yakında yanıtlanmayacak, ben de çok yakın bir şey çok benzer bir kaç ay önce – pythonian29033

cevap

0

Ben böyle bir şey kullanabilirsiniz düşünüyorum:

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); 
} 

Bu, div'ları topPosition'a dayanarak satırlara ayıracak. Yani 0 <= topPosition < 100 ile row[0] (ilk satır) içinde olan herhangi bir şey, 100 <= topPosition < 200 ile bir şey row[1] (ikinci sırada) vb.

Sonrasında bu yineleme ve leftPosition dayalı bunları yerleştirebilirsiniz.

Bu, her öğenin topPosition olmasına bağlı olduğu için size 7 satır vermenize gerek kalmaz. Yani, topPosition'un 600 <= topPosition < 600 gibi bir şeye sahip olmaması durumunda, yedinci sırada hiçbir şey olmayacaktır. Eğer satırların her dahilinde leftPosition göre sıralamak istiyorsanız

, bunu yapabilirsiniz:

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

Here is the fiddle.

+0

dizisine yeni bir dizi (resimdeki) noktaları ayıklamak istiyorum lütfen bir jsfiddle içinde göster, burada hangi işlevin döndüğünü göremiyorum. THANKS –

+0

@MarkWest Fonksiyon, "satır" değerini döndürür. –

+0

, bu işlev, üst ve sol satırın içinde elemanları olan 7 yeni dizi yaratacaktır [1] ({topPosition: top, leftPosition: left} {vb ...}, ... ... ... Nasıl ayarlanır? Bundan sonra her yeni oluşturulan dizi dizisi [i] dizinin içindeki sol pozisyonda mı? –