忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

JavaScript jQueryで table の操作する方法その2・データ追加


今回は 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 を追加することで、 その行のオブジェクトが取得できます。 その後、そのオブジェクトのクローンを作成し tbodyappend メソッドで追加します。

上記の 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

コメント

コメントを書く