HTML
tabindex の順序が期待通りにならない
tabindexの順序が期待通りにならない
こんな症状
tabindexで順序を指定したのにTab移動が期待通りにならない。正の値は避けて0か-1を使おう。
まず試す
正の tabindex をやめ、tabindex="0"(DOM順)にする。フォーカス対象から外すなら -1。
html
<!-- tabindex="0" は全部同じ扱い。フォーカス順は上から書いたHTMLの並び順になる -->
<button tabindex="0">1番目に書いた = 1番目にフォーカス</button>
<button tabindex="0">2番目に書いた = 2番目にフォーカス</button>
<button tabindex="0">3番目に書いた = 3番目にフォーカス</button>これで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓正の値(1,2,3…)を使っている
→ tabindex="0" にして HTML の並び順で制御する。 - ✓要素を後から足したら順序が崩れた
→ 正の値は崩れやすい。0 に統一する。 - ✓フォーカスさせたくない要素
→ tabindex="-1" にする。
なぜ起きる?
tabindexに正の値(1, 2, 3...)を使うと、DOM順序ではなくtabindex値の昇順でフォーカスが移動するよ。複雑になりやすく、後から要素を追加すると順序が崩れる。
✕ エラーが起きるコード
<button tabindex="3">3番目</button>
<button tabindex="1">1番目</button>
<button tabindex="2">2番目</button>
<!-- DOM順と異なる順序でフォーカスが移動 -->✓ 直したコード
<!-- tabindex=0でDOM順序通りにフォーカス -->
<button tabindex="0">1番目</button>
<button tabindex="0">2番目</button>
<button tabindex="0">3番目</button>✅ 直ったか確認
Tabキーで HTML の並び順どおりにフォーカスが移ればOK。
この解決法は役立ちましたか?
🔗 関連するエラー
- imgのalt属性エラー — alt属性が書かれていない
- lang属性の未設定 — html要素にlang属性がない
- 画像が表示されない — 画像パスが間違っている
- ページのレイアウトが崩れる — タグの閉じ忘れ
- リンクをクリックしても何も起きない — href 属性の書き忘れ
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- HTMLとは?初心者向けにわかりやすく解説 — タグの書き方・ページ構造の基本
- HTMLのパス(相対パス・絶対パス)の書き方 — パスの書き方を初心者向けに解説