複数の行と複数の列が必要です。これを実現する最も簡単な方法は、単語のリストではなく、両方を反復処理することです。
これは次のようになります。
var rows = 4;
var cols = 5;
for (var row=0; row < rows; row++) {
// Open the <tr>
for (var col=0; col < cols; col++) {
index = (row*cols) + col;
// Add a <td> containing listOfWords[index]
}
// Close the <tr>
}
この戦略により、テーブル内の行数と列数を簡単に変更できます(リストの長さが列数の正確な倍数でなくても)。
コメントを削除したようですが、どのアイテムがどこに行くかをランダム化sort
するには、 andを使用してリストをシャッフルするだけですrandom
:
var listOfWords = ["mat","cat","dog", "pit", "pot", "fog", "log", "pan", "can", "man"];
listOfWords.sort(function() { return 0.5 - Math.random(); });
元のリストを保持する必要がある場合は、最初に次を使用してリストのコピーを作成しますslice
。
var listOfWords = ["mat","cat","dog", "pit", "pot", "fog", "log", "pan", "can", "man"];
var shuffledWords = listOfWords.slice(0);
shuffledWords.sort(function() { return 0.5 - Math.random(); });
完全なソリューション
すでに jQuery を使用しているため、新しいノード ( 、 など) を作成する最善の方法<tr>
は<td>
、完全な HTML を記述するのではなく、jQuery()
関数( と同じ$()
) にノードを作成させることです。そうすれば、ノードのすべての DOM および jQuery 関数にアクセスできますappendTo()
。
これを試して:
var listOfWords = ["mat","cat","dog", "pit", "pot", "fog", "log", "pan", "can", "man"];
var shuffledWords = listOfWords.slice(0);
shuffledWords.sort(function() { return 0.5 - Math.random(); });
var table = $('<table>'); // <-- creates a new jQuery object containing a <table> node
var rows = 4;
var cols = 5;
var tr;
var index;
for (var row=0; row < rows; row++) {
tr = $('<tr>');
for (var col=0; col < cols; col++) {
index = (row*cols) + col;
$('<td>').text(shuffledWords[index]).appendTo(tr);
}
tr.appendTo(table);
}
table.appendTo('body');
デモ
ここで実例を見ることができます。