0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tab切り替え

0
Posted at
title.html
<div class="search-area">

  <!-- ① 全共通 -->
  <div class="search-common">
    <input type="text" placeholder="キーワード検索">
  </div>

  <!-- ② タブ2・3共通 -->
  <div class="search-shared option" data-tab="2-3">
    <select>
      <option>共通条件</option>
    </select>
  </div>

  <!-- ③ 個別 -->
  <div class="search-option option" data-tab="2">
    <select>
      <option>タブ2専用</option>
    </select>
  </div>

  <div class="search-option option" data-tab="3">
    <select>
      <option>タブ3専用</option>
    </select>
  </div>

</div>

<!-- タブ -->
<ul class="tabs">
  <li data-tab="1" class="is-active">検索のみ</li>
  <li data-tab="2">タイプA</li>
  <li data-tab="3">タイプB</li>
</ul>

title.js
document.querySelectorAll('.tabs li').forEach(tab => {
  tab.addEventListener('click', () => {
    const id = tab.dataset.tab;

    // タブのactive
    document.querySelectorAll('.tabs li').forEach(t =>
      t.classList.toggle('is-active', t === tab)
    );

    // いったん全部非表示
    document.querySelectorAll('.option').forEach(opt =>
      opt.classList.remove('is-active')
    );

    // タブ2・3は共通セレクト表示
    if (id === '2' || id === '3') {
      document
        .querySelector('[data-tab="2-3"]')
        .classList.add('is-active');
    }

    // 個別セレクト表示
    if (id !== '1') {
      document
        .querySelector(`.search-option[data-tab="${id}"]`)
        ?.classList.add('is-active');
    }
  });
});

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?