コンテンツにスキップ

066. innerHTML(内側の入れ替え:最も標準的な更新スタイル)

原理:箱の中身を入れ替える

「枠」は残して「中身」を新しくする

HTMXにおいて、最もよく使われる更新方法がこの innerHTML(インナー・エイチティーエムエル)です。

画面上の特定の要素(例えば div)を一つの「箱」だと考えてください。innerHTML を使った更新とは、その箱自体(外枠)はそのまま残し、中の荷物(子要素やテキスト)だけをすべて取り出して、新しいHTMLに入れ替えるという操作です。

これは非常に直感的で、かつ安全な方法です。なぜなら、箱に付いている属性(IDやクラス、イベント設定など)は維持されるため、周りのデザインやスクリプトを壊す心配が少ないからです。


実践:コンテンツをスマートに書き換える

1. タブの中身を更新する

タブの切り替えや、情報の詳細表示など、「器」が決まっている場所に内容を流し込む例です。

<!-- 
  hx-target: #content-area を狙い撃ち
  hx-swap: innerHTML (デフォルトなので省略可能)
-->
<button hx-get="/api/tab1" hx-target="#content-area" hx-swap="innerHTML">
    タブ1を表示
</button>

<div id="content-area" style="border: 1px solid #ccc; padding: 10px;">
    <!-- ボタンを押すと、ここ(内側)が書き換わります。div自体は消えません -->
    最初に表示されている内容です。
</div>

2. デフォルトの挙動を理解する

HTMXでは、hx-swap を何も指定しなかった場合、自動的に innerHTML が選ばれます。つまり、私たちが普段「ここを更新して!」と思っていることのほとんどは、この innerHTML の仕組みで動いています。

3. ステップ・バイ・ステップ解説

  1. ターゲットの選定: 中身を書き換えたい要素に id="aaa" などの名前を付けます。
  2. 実行: ボタンなどで hx-target="#aaa" を指定して通信します。
  3. 結果の確認: サーバーから届いたHTMLが、ターゲットの内側にパッと収まるのを確認します。

比較:innerHTML vs outerHTML(次回予告)

innerHTML(今回)

  • 範囲: ターゲットの「内側」だけ。
  • メリット: ターゲット自体に設定されたCSSやIDが維持されるので、スタイルが崩れにくい。

outerHTML(次回)

  • 範囲: ターゲットの「外側(自分自身)」も含めて全部。
  • メリット: ターゲットのタグそのものを別のタグに変えたい時などに便利。

まとめ:初心者のための「器」と「中身」

innerHTML は、HTMX開発における「ホームポジション」です。

  • 迷ったらこれ: まずは innerHTML(または無指定)で始めてみましょう。ほとんどのケースで期待通りの動きになります。
  • 親要素の役割: 親要素(ターゲット)に背景色や余白を設定しておけば、中身がどれだけ入れ替わっても、一貫した見た目を保つことができます。
  • アニメーションとの相性: 中身が切り替わる瞬間にフワッとさせるCSS(087.解説予定)なども、この innerHTML と非常に相性が良いです。

箱はそのままに、中身を常に新しく。innerHTML という基本技をマスターして、安定感のある、心地よい画面更新を実現してください。次の記事では、自分自身を丸ごと入れ替える「outerHTML」(067. outerHTML)をご紹介します。