読み込み中...

HTMLのHiddenを活用!初心者でも簡単にできる10の使い方とサンプルコード

HTML Hidden属性を活用する方法を学ぶ初心者 HTML
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

HTML hidden属性とinput要素のtype=”hidden”について、基本から応用まで解説します。

この記事では、要素を非表示にする2つの異なる方法を整理し、それぞれの特徴と使い方を明確に説明していきます。

ウェブページ制作において、これらの機能を正しく理解することで、より効果的な実装が可能になるでしょう。

初心者の方にも理解しやすいよう、具体的なコード例を交えながら解説を進めていきます。

●HTML hidden属性とtype=”hidden”の違い

HTMLには要素を非表示にする2つの主要な方法があります。

1つ目は、HTML5で導入されたグローバル属性の「hidden」です。

2つ目は、フォームで使用される「input type=”hidden”」となります。

これらは名前は似ていますが、用途と動作が異なるため、正確に理解することが重要です。

○hidden属性(グローバル属性)の基本

hidden属性は、あらゆるHTML要素に適用できるグローバル属性です。

要素にhidden属性を追加すると、その要素は画面に表示されなくなります。

<div hidden>この要素は表示されません</div>
<p hidden>このテキストも非表示です</p>

JavaScriptで動的に表示・非表示を切り替えることも可能です。

// 要素を非表示にする
element.hidden = true;
// 要素を表示する
element.hidden = false;

○input type=”hidden”の基本

input要素のtype=”hidden”は、フォームデータを送信する際に使用します。

ユーザーには見えませんが、フォーム送信時にデータがサーバーに送られます。

<input type="hidden" name="userid" value="12345">

この要素は画面に表示されませんが、name属性とvalue属性で指定したデータをフォームと共に送信できます。

●hidden属性とtype=”hidden”の使い方

それぞれの機能について、実際の使用例を見ていきましょう。

用途に応じて適切な方法を選択することが、効果的な実装の鍵となります。

ここでは、フォームでの使用、JavaScriptとの連携、CSSとの比較など、実践的な観点から解説していきます。

○サンプルコード1:フォーム内でtype=”hidden”を使う

フォームで追加情報を送信する際に、input type=”hidden”を使用します。

<form action="/submit" method="post">
  <input type="hidden" name="userid" value="12345">
  <input type="text" name="username" placeholder="名前を入力">
  <input type="submit" value="送信">
</form>

この例では、ユーザーが入力する名前と共に、ユーザーIDが自動的にサーバーへ送信されます。

セッション情報やCSRFトークンなど、ユーザーが直接編集する必要のないデータの送信に適しています。

○サンプルコード2:JavaScriptでhidden属性を操作する

hidden属性を使用して、要素の表示・非表示を動的に制御できます。

<button onclick="toggleElement()">表示切替</button>
<div id="targetElement">切り替え対象の要素です</div>

<script>
function toggleElement() {
  const element = document.getElementById('targetElement');
  element.hidden = !element.hidden;
}
</script>

ボタンをクリックすると、要素の表示状態が切り替わります。

この方法は、ユーザーインタラクションに応じた動的な表示制御に便利です。

○サンプルコード3:CSSのdisplay:noneとの比較

要素を非表示にする方法として、CSSのdisplay:noneも利用できます。

<div class="css-hidden">CSSで非表示にする要素</div>
<div hidden>hidden属性で非表示にする要素</div>

<style>
.css-hidden {
  display: none;
}
</style>

両方とも要素を非表示にしますが、hidden属性の方がHTMLの意味論的により明確です。

また、CSSが無効な環境でもhidden属性は機能するという利点があります。

●実践的な応用例

基本的な使い方を理解したところで、実際の開発で役立つ応用例を紹介します。

これらの例を参考に、より高度な実装に挑戦してみましょう。

条件付き表示、ユーザー行動の記録、状態管理など、実務で頻繁に使用される実装パターンを解説していきます。

○サンプルコード4:条件付き表示の実装

チェックボックスの状態に応じて、要素の表示を切り替える例です。

<label>
  <input type="checkbox" id="showElement"> 詳細情報を表示
</label>
<div id="detailInfo" hidden>
  <h3>詳細情報</h3>
  <p>ここに詳細な情報が表示されます。</p>
</div>

<script>
document.getElementById('showElement').addEventListener('change', function() {
  const element = document.getElementById('detailInfo');
  element.hidden = !this.checked;
});
</script>

チェックボックスのオン・オフに連動して、詳細情報の表示・非表示が切り替わります。

○サンプルコード5:ユーザー行動の記録

ユーザーのクリック情報を記録し、フォームで送信する実装例です。

<button onclick="recordAction('button1')">ボタン1</button>
<button onclick="recordAction('button2')">ボタン2</button>

<form action="/analytics" method="post" id="actionForm">
  <input type="hidden" name="lastAction" id="lastAction">
  <input type="submit" value="送信">
</form>

<script>
function recordAction(actionId) {
  document.getElementById('lastAction').value = actionId;
}
</script>

ボタンをクリックすると、その情報がhidden inputに記録されます。

フォーム送信時に、最後にクリックされたボタンの情報がサーバーに送られます。

○サンプルコード6:ページ内ナビゲーション

スムーズスクロールを実装したページ内ナビゲーションの例です。

<nav>
  <a href="#section1">セクション1へ</a>
  <a href="#section2">セクション2へ</a>
  <a href="#section3">セクション3へ</a>
</nav>

<section id="section1">
  <h2>セクション1</h2>
  <p>セクション1の内容です。</p>
</section>

<section id="section2">
  <h2>セクション2</h2>
  <p>セクション2の内容です。</p>
</section>

<section id="section3">
  <h2>セクション3</h2>
  <p>セクション3の内容です。</p>
</section>

各セクションのid属性を使用してページ内リンクを実現しています。

○サンプルコード7:データの一時保存

フォーム入力中のデータを一時的に保存する実装です。

<form id="dataForm">
  <input type="text" id="userName" placeholder="名前">
  <input type="email" id="userEmail" placeholder="メールアドレス">
  <input type="hidden" id="savedData" name="savedData">
  <button type="button" onclick="saveData()">一時保存</button>
  <input type="submit" value="送信">
</form>

<script>
function saveData() {
  const data = {
    name: document.getElementById('userName').value,
    email: document.getElementById('userEmail').value
  };
  document.getElementById('savedData').value = JSON.stringify(data);
  alert('データを一時保存しました');
}
</script>

○サンプルコード8:アプリケーション状態の管理

シングルページアプリケーションでの状態管理例です。

<input type="hidden" id="appState" value="initial">

<button onclick="changeState('loading')">読み込み開始</button>
<button onclick="changeState('completed')">完了</button>

<div id="statusDisplay">現在の状態: initial</div>

<script>
function changeState(newState) {
  document.getElementById('appState').value = newState;
  document.getElementById('statusDisplay').textContent = '現在の状態: ' + newState;
}
</script>

○サンプルコード9:タブ切り替えインターフェース

hidden属性を使用したタブ切り替えの実装例です。

<div class="tabs">
  <button onclick="showTab('tab1')">タブ1</button>
  <button onclick="showTab('tab2')">タブ2</button>
  <button onclick="showTab('tab3')">タブ3</button>
</div>

<div id="tab1" class="tab-content">
  <h3>タブ1の内容</h3>
  <p>タブ1に関する情報です。</p>
</div>

<div id="tab2" class="tab-content" hidden>
  <h3>タブ2の内容</h3>
  <p>タブ2に関する情報です。</p>
</div>

<div id="tab3" class="tab-content" hidden>
  <h3>タブ3の内容</h3>
  <p>タブ3に関する情報です。</p>
</div>

<script>
function showTab(tabId) {
  // すべてのタブを非表示
  document.querySelectorAll('.tab-content').forEach(tab => {
    tab.hidden = true;
  });
  // 選択されたタブを表示
  document.getElementById(tabId).hidden = false;
}
</script>

○サンプルコード10:アクセシビリティに配慮した実装

スクリーンリーダー用の補足情報を提供する正しい方法です。

<button aria-describedby="helpText">ヘルプ</button>
<span id="helpText" class="visually-hidden">
  このボタンをクリックすると詳細なヘルプ情報が表示されます
</span>

<style>
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
</style>

視覚的には非表示ですが、スクリーンリーダーには読み上げられる実装となっています。

●注意点と対処法

hidden属性とtype=”hidden”を使用する際の注意点を説明します。

まず、input type=”hidden”に格納されたデータは、ブラウザの開発者ツールで簡単に確認・変更できます。そのため、機密性の高い情報や改ざんされると問題となるデータの格納は避けるべきです。サーバー側で必ずデータの検証を行いましょう。

hidden属性については、主要な現代のブラウザではサポートされていますが、Internet Explorer 10以前では対応していません。古いブラウザのサポートが必要な場合は、CSSやJavaScriptによる代替実装を検討してください。

また、アクセシビリティの観点から、重要な情報を単にhiddenで非表示にするのではなく、適切な代替手段を提供することが重要です。

●カスタマイズ方法

実装をさらに発展させるカスタマイズ方法を紹介します。

フォームのセキュリティを強化するために、CSRFトークンをinput type=”hidden”に格納する方法があります。サーバー側で生成したトークンをフォームに埋め込み、送信時に検証することで、クロスサイトリクエストフォージェリ攻撃を防げます。

また、hidden属性とJavaScriptを組み合わせることで、プログレッシブエンハンスメントを実現できます。JavaScriptが有効な環境では動的な表示切り替えを行い、無効な環境では最初から表示する、といった実装が可能です。

さらに、LocalStorageやSessionStorageと連携させることで、ページをリロードしても状態を保持する実装も実現できるでしょう。

まとめ

HTML hidden属性とinput type=”hidden”は、それぞれ異なる目的で使用される機能です。

hidden属性は要素の表示・非表示を制御し、type=”hidden”はフォームでの隠しデータ送信に使用します。

これらの機能を適切に使い分けることで、ユーザビリティの高いウェブページを構築できます。セキュリティやアクセシビリティに配慮しながら、効果的に活用していきましょう。