0

これは、テーブルに行を追加するための私のコードです

for(var i=0;i<subjects.length;i++){
    $('#table-wrapper table').append("<tr><td data-subjectid="+i+">"+subjects[i].name+"</td>");
    for(var j=0;j<no_of_batches;j++){
            $('#table-wrapper table').append("<td data-batchid="+j+"></td>");
    }
    $('#table-wrapper table').append("</tr>");
} 

これが生成する出力は

<table> 
    <tbody>
       <tr>
         <tr>
           <td data-subjectid="2">DBMS</td>
         </tr>
     </tbody>
        <td data-batchid="0"></td>
        <td data-batchid="1"></td>
        <td data-batchid="2"></td>
        <td data-batchid="3"></td>
 </table>

innerがテーブルの末尾<td>のタグに追加され<tr>ず、代わりに<tbody>

4

4 に答える 4

2

これを行う必要があります-

for(var i=0;i<subjects.length;i++){
    var $tr = $('<tr></tr>');
    $tr.append("<td data-subjectid="+i+">"+subjects[i].name+"</td>");
    for(var j=0;j<no_of_batches;j++){
            $tr.append("<td data-batchid="+j+"></td>");
    }
    $('#table-wrapper table').append($tr);
} 
于 2013-06-21T14:46:16.543 に答える
1

あなたはテーブルに追加しています

$('#table-wrapper table').append("<td data-batchid="+j+"></td>");

最後の tr に追加する必要があります

$('#table-wrapper table tr:last-child').append("<td data-batchid="+j+"></td>");

テストしていませんが、動作するはずです

より良い方法は、内容を文字列に追加してから一度追加することです

var temp;
for(var i=0;i<subjects.length;i++){
    temp = "<tr><td data-subjectid="+i+">"+subjects[i].name+"</td>";
    for(var j=0;j<no_of_batches;j++){
            temp = temp + "<td data-batchid="+j+"></td>";
    }
    temp = temp + "</tr>"
}
$('#table-wrapper table tbody').append(temp); 
于 2013-06-21T14:45:14.843 に答える
1

私があなたのコードを正しく理解していれば、次の方法を試すことができます。

var table = $('#table-wrapper table');
for(var i = 0; i < subjects.length; i++) {
    var row = $('<tr />');
    row.append("<td data-subjectid=" + i + ">" + subjects[i].name + "</td>");
    for(var j = 0; j < no_of_batches; j++) {
        row.append("<td data-batchid=" + j + "></td>");
    }
    table.append(row);
} 

そこで行を作成し、それにセルを追加してから、新しい行をテーブルに追加します。テーブルへの参照もキャッシュしたい場合があります。

于 2013-06-21T14:46:06.063 に答える
1

appendメソッドはwriteln同等ではありません。実際にテキストを解析し、最終的な完全なタグを生成しようとします。

一時的な文字列変数を使用して、追加するすべてのものを蓄積appendし、最後に 1 回だけ呼び出します。

var s;
for(var i=0;i<subjects.length;i++){
  s = "<tr><td data-subjectid="+i+">"+subjects[i].name+"</td>";
  for(var j=0;j<no_of_batches;j++){
    s += "<td data-batchid="+j+"></td>";
  }
  s += "</tr>";
  $('#table-wrapper table').append(s);
} 
于 2013-06-21T14:46:29.750 に答える