開発情報・ナレッジ

投稿者: ShiningStar株式会社 2025年9月8日 (月)

単票で未入力の項目を非表示にする方法

SPIRALの単票ページで、データが未入力の項目(行)を自動的に非表示にするJavaScriptの実装方法を紹介します。
これにより、データが入力されている項目のみをスッキリと表示させることができ、
ユーザーにとって見やすい画面を作成できます。

実装の概要

今回のコードでは、以下の流れで処理を行います。
ページが読み込まれた際にJavaScriptを実行し、表(テーブル)内の各項目をチェック。値が空のセルの行全体を非表示にします。

1. ページ読み込み完了後、指定されたクラス名を持つテーブルを取得します。
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を用いて単票ページの未入力項目を非表示にする方法を紹介しました。
この実装により、表示する情報を動的に制御し、より見やすい画面を提供できます。
解決しない場合はこちら コンテンツに関しての
要望はこちら