SPIRALの単票ページで、データが未入力の項目(行)を自動的に非表示にするJavaScriptの実装方法を紹介します。
これにより、データが入力されている項目のみをスッキリと表示させることができ、
ユーザーにとって見やすい画面を作成できます。
実装の概要
今回のコードでは、以下の流れで処理を行います。
ページが読み込まれた際にJavaScriptを実行し、表(テーブル)内の各項目をチェック。値が空のセルの行全体を非表示にします。
1. ページ読み込み完了後、指定されたクラス名を持つテーブルを取得します。
2. テーブル内のすべての行
3. 各行の値のセル
4. セルが空だった場合、その行全体を非表示にします。
2. テーブル内のすべての行
<tr>を一つずつ調べます。
3. 各行の値のセル
<td>が空かどうかを判定します。
4. セルが空だった場合、その行全体を非表示にします。
対象のHTMLコード
以下のような、SPIRALの単票においてデフォルトで生成されるテーブル構造を対象とします。
<table class="smp-card-list"> <tr> <th> メールアドレス </th> <td> %val:usr:f00xxxxxx% </td> </tr> <tr> <th> 名前 </th> <td> %val:usr:f00xxxxxx% </td> </tr> <tr> <th> 備考 </th> <td> %val:usr:f00xxxxxx% </td> </table>
JavaScriptコード
以下のJavaScriptコードを単票ページに設定します。このコードは、値が空のテーブル行を非表示にします。
<script> document.addEventListener('DOMContentLoaded', function() { // 対象のテーブルを取得 const table = document.querySelector('.smp-card-list'); if (!table) { return; // テーブルが見つからない場合は何もしない } // テーブル内のすべての行を取得 const rows = table.querySelectorAll('tr'); rows.forEach(row => { // 各行の2番目のセル(値が表示される<td>)を取得 const valueCell = row.querySelector('td'); if (valueCell) { // セルのテキスト内容を取得し、前後の空白を削除 const cellText = valueCell.textContent.trim(); // セルが空文字、またはSPIRALの未入力時の置換文字列そのものである場合に非表示にする if (cellText === '' || cellText.startsWith('%val:')) { // 親の<tr>要素を非表示にする row.style.display = 'none'; } } }); }); </script>
設定方法
SPIRALの単票ページのHTML内に、上記のJavaScriptコードを追加します。これを、
</body>タグの直前に追加するのが一般的です。
実行結果
単票ページが表示された際に、JavaScriptが自動で実行されます。例えば、「備考」フィールドが未入力の場合、「備考」の行全体(
<th>と
<td>)が表示されなくなります。
まとめ
本記事では、JavaScriptを用いて単票ページの未入力項目を非表示にする方法を紹介しました。
この実装により、表示する情報を動的に制御し、より見やすい画面を提供できます。
この実装により、表示する情報を動的に制御し、より見やすい画面を提供できます。