iT邦幫忙

0

請教在Next.js裡用js添加class的方式來修改css的問題

  • 分享至 

  • xImage

小弟想要讓商品的分類欄如果被點擊的話文字就變藍色,然後底下內容的高度從原本的0變成fit-content,讓內容顯示出來;如果已經被點擊開了,就讓文字變回黑色,然後內容關閉。

程式碼如下:

const categoryTitleRef = useRef<HTMLDivElement>(null); // 分類標題
const categoryContentRef = useRef<HTMLDivElement>(null); // 分類內容

  if (categoryTitleRef.current) {
    categoryTitleRef.current.addEventListener("click", () => {
      if (categoryTitleRef.current!.classList.contains("text-black")) {
        categoryTitleRef.current!.classList.remove("text-black");
        categoryTitleRef.current!.classList.add("text-sky-500");
        categoryContentRef.current!.classList.remove("h-0");
        categoryContentRef.current!.classList.add("h-fit");
      } else {
        categoryTitleRef.current!.classList.add("text-black");
        categoryTitleRef.current!.classList.remove("text-sky-500");
        categoryContentRef.current!.classList.remove("h-fit");
        categoryContentRef.current!.classList.add("h-0");
      }
    });
  }

小弟是用tailwindcss,然後添加className來修改;預設狀態文字是黑色,透過標題是否有text-black這個class來判斷內容該開啟或關閉。

不過我發現當我點下去之後,class有改變,但是會瞬間又變回原本的樣子(快速連點之後發現的),結果就沒有作用,想請問這是為什麼?

blinjay iT邦新手 5 級 ‧ 2022-01-07 16:29:36 檢舉
程式碼邏輯應該是對的
或許是滑鼠連點?
也或許重複監聽了click事件導致這狀況
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答