JavaScript で、HTML テーブルを使用してグリッド (Photoshop で表示されるグリッドのタイプ) を作成しています。グリッド サイズは可変、つまりユーザーが変更できるため、正確なサイズのグリッドを取得するには、各グリッドの正方形のサイズを計算し、使用可能なピクセル数で割る必要があります。
これをすべて実行しましたが、グリッドを作成するために必要なテーブル要素を追加するのに問題があります。私のコードは完全に機能していますが、 for ループ内で関数を使用する場合はappendChild()
、数百まで追加する必要がある場合に、単一の子のみを追加します。
私のコード:
grid.show = function(event)
{
var e = event;
if(grid.show_grid == false)
{
grid.show_grid = true;
parent.document.getElementById("grid_table").style.display = "block";
// Get grid (table) and create some elements.
grid.get_grid = parent.document.getElementById("grid_table");
grid.tr = parent.document.createElement("tr");
grid.td = parent.document.createElement("td");
// Clear the grid of all squares so we don't have to worry about subtracting anything.
grid.get_grid.innerHTML = "";
// Calculate the number of horizontal and vertical squares.
var horizontal = Math.ceil(grid.total_width / grid.size);
var vertical = Math.ceil(grid.total_height / grid.size);
// This was a nested loop, removed for demonstration.
// Attempting to add 10 "<tr><td></td></tr>" to the table.
for(var j = 0; j < 10; j++)
{
grid.tr.appendChild(grid.td);
}
//console.log(grid.tr);
// Add the elements to the table.
grid.get_grid.appendChild(grid.tr);
}
else
{
grid.show_grid = false;
parent.document.getElementById("grid_table").style.display = "none";
}
}
これは、次のように、単一のテーブル データを含む単一のテーブル行のみを返します。
<tr>
<td></td>
</tr>
私はすでにこのページとこのページを見てきましたが、有望に思えますが、これを機能させる方法がわかりません。
編集:コードが機能するようになりました、解決策:
grid.show = function(event)
{
var e = event;
if(grid.show_grid == false)
{
grid.show_grid = true;
parent.document.getElementById("grid_table").style.display = "block";
grid.get_grid = parent.document.getElementById("grid_table");
grid.tr = null;
grid.td = null;
grid.get_grid.innerHTML = "";
var horizontal = Math.ceil(grid.total_width / grid.size);
var vertical = Math.ceil(grid.total_height / grid.size);
for(var i = 0; i < vertical; i++)
{
grid.tr = parent.document.createElement("tr");
for(var j = 0; j < horizontal; j++)
{
grid.td = parent.document.createElement("td");
grid.td.width = grid.size;
grid.td.height = grid.size;
grid.tr.appendChild(grid.td);
}
grid.get_grid.appendChild(grid.tr);
}
}
else
{
grid.show_grid = false;
parent.document.getElementById("grid_table").style.display = "none";
}
}