tableタグとは?

tableタグは、データを表形式に表示できるものです。 データの見通しがよく、WEBクライアントのUI(ユーザーインターフェース)部品としても、非常に便利です。

例:

日付 項目 個数
2026/05/01 りんご 1
2026/05/02 ばなな 2
2026/05/03 みかん 3
合計 6

HTML

<table>
  <thead>
    <tr>
      <th>日付</th>
      <th>項目</th>
      <th>個数</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2026/05/01</td>
      <td>りんご</td>
      <td>1</td>
    </tr>
    <tr>
      <td>2026/05/02</td>
      <td>ばなな</td>
      <td>2</td>
    </tr>
    <tr>
      <td>2026/05/03</td>
      <td>みかん</td>
      <td>3</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td colspan=2>合計</td>
      <td>6</td>
    </tr>
  </tfoot>
</table>

CSS

table {
  border: 1px solid black;
  border-collapse: collapse;
}
td {
  border: 1px solid black;
}
th {
  border: 1px solid black;
  background-color: skyblue;
}


なぜ、拡張が必要か?

tableタグは、あくまで静的なHTML文書用タグです。 WEBクライアントアプリでUI(ユーザーインターフェース)部品として、使用しようとするとJavaScript等による書き換えが必要となります。 例えば、データを追加したいとなると、都度、DOM操作が必要となります。

このような処理を行ってくれるライブラリとしては、下記のようなものがオープンソースとして公開されています。

これらのライブラリの機能は非常に強力で、様々な便利な機能が利用できます。

本格的なWEBクライアントプログラムを開発したい場合には、非常に心強いライブラリです。

ただ、シンプルなマスターメンテナンスの様なUI部品を考えた場合、ここまでの機能がなくとも簡易的なものが自作可能です。特に、本サイトで使用するテストプログラム等では、HTML, CSS, JavaScript だけで十分のものが作成できます。

そこで、ここでは、Web Components として、「拡張tableタグ」を作成していきたいと思います。


どの様な機能を追加するか

以下のような機能を付加します。

  • Web Components として独自タグで定義できるようにする。
  • tableの項目は、タグ定義時に指定できるようにする。
  • ヘッダー部、ボディ部、フッター部は個別のメソッドで出力できるようにする。
  • ボディ部への行出力はメソッド呼び出しで渡されたデータを1行ごと、追加可能とする
  • ヘッダー部の出力要求時、テーブルを初期化する。
  • ヘッダー部とフッター部は位置を固定化する。
  • 複数行の受け渡しで、テーブル全体を再描画するようにする。

「拡張tableタグ」の動作イメージの確認

作成方法を説明していく前に、実際の動きを確認していただこうと思います。

下記のボタンを押下することで、「拡張tableタグ」を使用したテストプログラムの起動が可能です。

テストプログラムを通じて、完成した「拡張tableタグ」の動作が確認できます。

👉 本記事のテストプログラムを動かすことで、Web Components が体感できます。


テストプログラムの概要(かんたん説明)

本テストプログラムは、過去投稿「データ保存技術/IndexedDBの動作確認③」で使用したものをWeb Componentsに合わせ、カスタマイズしています。

また、データの保存先として IndexedDB を利用しています。

※ IndexedDB について詳しく知りたい方は、過去投稿「データ保存技術/IndexedDBとは」を参照してください。

以下に、このテストプログラムの説明と使い方を再掲します。

このプログラムが保存するデータは、売り上げのオブジェクトです。

例:

{
  id: 1,
  hizuke: 2026/05/01, ← 実際には、date オブジェクト
  hinmoku: "えんぴつ",
  kingaku: 1000
}

表示画面には、大きく分けて3つのエリアが存在します。

  • テーブルエリア
  • 検索項目エリア
  • 検索条件エリア

テーブルエリア

IndexedDBに格納されているデータが一覧で表示されます。(最大10件)

検索項目エリア

検索対象とする項目を選択するものです。

検索条件エリア

値を入力することにより、一致検索、前方一致検索、下限検索、上限検索、範囲検索が可能です。検索されたデータは、テーブルエリアに反映されます。

全検索ボタン押下により、全件表示に戻ります。

構造はいたってシンプルです。

操作手順

手順①:本頁の「テストプログラム起動」を押す

テストプログラム起動 👉 起動時に、現在登録されているデータがテーブルエリアに表示されます。

手順②:一致検索

検索項目エリアにて、検索対象の項目を選択 検索条件エリアの1つ目の入力欄に値を入力し、「一致検索」ボタン押下 👉 入力欄への入力後、「一致検索」ボタンが押せるようになります。

手順③:前方一致検索

検索項目エリアにて、検索対象の項目を選択 検索条件エリアの1つ目の入力欄に値を入力し、「前方一致検索」ボタン押下 👉 入力欄への入力後、「前方一致検索」ボタンが押せるようになります。ただし、検索対象項目が文字列の場合のみ使用可能となります。

手順④:下限検索

検索項目エリアにて、検索対象の項目を選択 検索条件エリアの2つ目の入力欄に値を入力し、「下限検索」ボタン押下 👉 入力欄への入力後、「下限検索」ボタンが押せるようになります。 👉 「閾値含む」のチェックを外すことで、入力した値を含まない検索が可能です。

手順⑤:上限検索

検索項目エリアにて、検索対象の項目を選択 検索条件エリアの3つ目の入力欄に値を入力し、「上限検索」ボタン押下 👉 入力欄への入力後、「上限検索」ボタンが押せるようになります。 👉 「閾値含む」のチェックを外すことで、入力した値を含まない検索が可能です。

手順⑥:範囲検索

検索項目エリアにて、検索対象の項目を選択 検索条件エリアの2つ目と3つ目の入力欄の両方に値を入力し、「範囲検索」ボタン押下 👉 両方の入力欄への入力後、「範囲検索」ボタンが押せるようになります。 👉 「閾値含む」のチェックを外すことで、入力した値を含まない検索が可能です。

手順⑦:全検索

「全検索」ボタン押下 👉 登録されている全てのデータが読み込まれます。

(つづく)