5

画像に示すように、テーブルにポイントを配置する関数を作成しようとしています:

ここに画像の説明を入力

変更する必要があるコードは次のとおりです。

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

助言がありますか?行ごとにポイントを配置するにはどうすればよいですか...

そのために私を助けてください///

コード: http://jsfiddle.net/sYq9S/9/

4

1 に答える 1

0

次のようなものを使用できると思います。

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

これにより、 に基づいて div が行にグループ化されますtopPosition。したがって、 を持つもの0 <= topPosition < 100はすべてrow[0](最初の行) に、 を持つ100 <= topPosition < 200ものはrow[1](2 番目の行) に含まれます。

次に、これらを反復処理して、に基づいて配置できますleftPosition

ただし、各要素7の に依存するため、必ずしも行が得られるとは限りません。topPositionしたがって、そのtopPositionようなもの600 <= topPosition < 600がない場合、7 行目には何もありません。

各行内で並べ替えたい場合はleftPosition、次のようにすることができます。

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

これがフィドルです。

于 2013-07-25T21:05:15.650 に答える