37

約1000個のプロパティを持つJavaScriptオブジェクトがあり<table>、これらのエントリを1行に8個のプロパティで作成したいと考えています<tr>

私はjQueryを使用していappend()ます; ただし、終了</tr>タグが自動的に追加されます。クロージングの行き先を手動で定義したい</tr>。どうすればこれを達成できますか?

オブジェクト:

var g2u = {};

g2u.a1 = "&#xe000;";
g2u.a2 = "&#xe001;";
g2u.a3 = "&#xe002;";
g2u.a4 = "&#xe003;";
g2u.a5 = "&#xe004;";
g2u.a5a = "&#xe005;";
g2u.a6 = "&#xe006;";
g2u.a6a = "&#xe007;";
g2u.a6b = "&#xe008;";
... etc...

<table>:_

<table id="list" border="1">
</table>

<script>
var ctr = 0;
$("#list").append('<tr>');

for (var g in g2u) {
  $("#list").append('<td><span class="rom">'+g+'</span>\n');
  $("#list").append('<span class="eh">'+g2u[g]+'</span>\n');
  $("#list").append('<span class="rom">&nbsp;&nbsp;</span></td>\n');
  ctr++;
  if (ctr % 8 == 0) {
    $("#list").append('</tr><tr>\n');
  }
}

壊れた出力:

<tbody><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr></tbody>
<td><span class="rom">a1</span></td><span class="eh"></span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a2</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a3</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a4</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a5</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a5a</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a6</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a6a</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a6b</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a7</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a8</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a9</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a10</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a11</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a12</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a13</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a14</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><span class="rom">a14a</span></td><span class="eh">&lt;/span><span class="rom">&nbsp;&nbsp;</span><td><spa
4

3 に答える 3

60

追加すると、明らかにタグを閉じようとします。その文字列をdomに追加するよりも、htmlを文字列に入れてみてください。

    <script>
    var ctr = 0;
    var html='<tr>';

    for (var g in g2u) {
      html+='<td><span class="rom">'+g+'</span>\n';
      html+='<span class="eh">'+g2u[g]+'</span>\n';
      html+='<span class="rom">&nbsp;&nbsp;</span></td>\n';
      ctr++;
      if (ctr % 8 == 0) {
        html+='</tr><tr>\n';
      }
    }


     $("#list").append(html);
于 2012-10-18T07:13:45.223 に答える
16

html マークアップの観点から考えています。append を使用すると、html DOMの観点から考える必要があります。開始タグはなく、要素だけの終了タグはありません。

文字列を使用してhtmlを作成し、それをテーブルに追加できます

var ctr = 0;
var innerTable = '<tr>';

for (var g in g2u) {
  innerTable += '<td><span class="rom">'+g+'</span>\n';
  innerTable += '<span class="eh">'+g2u[g]+'</span>\n';
  innerTable += '<span class="rom">&nbsp;&nbsp;</span></td>\n';
  ctr++;
  if (ctr % 8 == 0) {
    innerTable += '</tr><tr>\n';
  }
}
$("#list").append(innerTable);
于 2012-10-18T07:13:01.303 に答える