今回は table への操作処理の第1弾として table に行を追加する方法について説明します。
■このページの内容
■tr タグを文字列として作成しそれをそのまま行追加する
table の最終行への追加は tbody オブジェクトの append メソッドを使用します。 また、先頭行の前への追加は tbody オブジェクトの prepend メソッドを使用します。
以下のソースでは「id="btn1"」のボタンクリックイベントで最終行への追加を行い、 「id="btn2"」のボタンクリックイベントで先頭行の前への追加を行います。 尚、追加される行の中身はテストなので固定としています。
<html> <head> <meta charset="utf-8"> <title>test jQuery add</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> <table border="1"> <thead> <tr> <th>品名</th> <th>数量</th> <th>単価</th> <th>金額</th> </tr> </thead> <tbody> <tr> <td>りんご</td> <td>2</td> <td>100</td> <td>200</td> </tr> <tr> <td>みかん</td> <td>5</td> <td>50</td> <td>250</td> </tr> <tr> <td>いちご</td> <td>3</td> <td>250</td> <td>750</td> </tr> </tbody> </table> <button id="btn1">最終行に追加</button> <button id="btn2">先頭に追加</button> <script> $(function () { //<button id="btn1">のクリックイベントの関数を宣言 $("#btn1").click(function(){ //最終行に"<tr><td>~</td></tr>"の文字列を追加 var str = ""; str += "<tr>"; str += " <td>その他1</td>"; str += " <td>10</td>"; str += " <td>100</td>"; str += " <td>1000</td>"; str += "</tr>"; $('table tbody').append(str); }); //<button id="btn2">のクリックイベントの関数を宣言 $("#btn2").click(function(){ //先頭に"<tr><td>~</td></tr>"の文字列を追加 var str = ""; str += "<tr>"; str += " <td>その他2</td>"; str += " <td>10</td>"; str += " <td>100</td>"; str += " <td>1000</td>"; str += "</tr>"; $('table tbody').prepend(str); }); }); </script> </body>
以下で動作の様子が分かります。
品名 | 数量 | 単価 | 金額 |
---|---|---|---|
りんご | 2 | 100 | 200 |
みかん | 5 | 50 | 250 |
いちご | 3 | 250 | 750 |
■table 最終行のコピーを行追加する
table の最後の行を取得するにはセレクタで tbody の後に tr:last-child を追加することで、 その行のオブジェクトが取得できます。 その後、そのオブジェクトのクローンを作成し tbody の append メソッドで追加します。
上記の append メソッドの引数は文字列でしたが、今回は jqueyオブジェクト を渡しています。 このメソッドは 文字列、DOM Element および jqueyオブジェクト 何れでも動作します。
<html> <head> <meta charset="utf-8"> <title>test jQuery add2</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> <table border="1"> <thead> <tr> <th>品名</th> <th>数量</th> <th>単価</th> <th>金額</th> </tr> </thead> <tbody> <tr> <td>りんご</td> <td>2</td> <td>100</td> <td>200</td> </tr> <tr> <td>みかん</td> <td>5</td> <td>50</td> <td>250</td> </tr> <tr> <td>いちご</td> <td>3</td> <td>250</td> <td>750</td> </tr> </tbody> </table> <button id="btn1">最終行に追加</button> <script> $(function () { //<button id="btn1">のクリックイベントの関数を宣言 $("#btn1").click(function(){ //最終行のjqueryオブジェクト取得 var obj = $("table tbody tr:last-child").clone(true); //最後尾にjqueryオブジェクト追加 $('table tbody').append(obj); }); }); </script> </body>
以下で動作の様子が分かります。
品名 | 数量 | 単価 | 金額 |
---|---|---|---|
りんご | 2 | 100 | 200 |
みかん | 5 | 50 | 250 |
いちご | 3 | 250 | 750 |
■table に非表示のテンプレート行を持って最終行のコピーを行追加する
table の先頭にテンプレートとなる行を設けます。この行のスタイルは非表示にしておきます。
後は最終行のコピーを追加する時の様に、テンプレート行のオブジェクトを取得し、table の最後に追加してやります。
<html> <head> <meta charset="utf-8"> <title>test jQuery add2</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> <table border="1"> <thead> <tr> <th>品名</th> <th>数量</th> <th>単価</th> <th>金額</th> </tr> </thead> <tbody> <tr id="RowTemplate" style="display: none;"> <td>なし</td> <td>2</td> <td>50</td> <td>100</td> </tr> <tr> <td>りんご</td> <td>2</td> <td>100</td> <td>200</td> </tr> <tr> <td>みかん</td> <td>5</td> <td>50</td> <td>250</td> </tr> <tr> <td>いちご</td> <td>3</td> <td>250</td> <td>750</td> </tr> </tbody> </table> <button id="btn1">最終行に追加</button> <script> $(function () { //<button id="btn1">のクリックイベントの関数を宣言 $("#btn1").click(function(){ //テンプレート行のjqueryオブジェクト取得 var obj = $('#RowTemplate').clone(); //非表示スタイルを表示にする obj.show(); //最後尾にjqueryオブジェクト追加 $('table tbody').append(obj); }); }); </script> </body>
品名 | 数量 | 単価 | 金額 |
---|---|---|---|
りんご | 2 | 100 | 200 |
みかん | 5 | 50 | 250 |
いちご | 3 | 250 | 750 |
PR
コメント