웹/포토폴리오

[바닐라 JS] FAQ 사이트 제작하기 - 0. js 헤멤

Judith Hopps 2023. 1. 19. 21:49
반응형
2023.1.19.목
1. html, css
2. javascript

헤매는 과정

1. javascript

문제)

a. 버튼을 클릭하면 아이콘이 두개가 뜸

b. 코드

let show_contents = document.querySelectorAll(".show_content");
let hide_contents = document.querySelectorAll(".hide_content");
// console.log(hide_contents)
const btns = document.querySelectorAll(".question-btn");
btns.forEach(function(btn) {
  btn.addEventListener('click',function() {
    show_contents = document.querySelectorAll(".show_content");
    hide_contents = document.querySelectorAll(".hide_content");
    hide_contents.forEach(v => {
          v.classList.toggle("show_content");
          // v.classList.add("show_content");})
      });
    show_contents.forEach(v=>{
          v.classList.toggle("hide_content")});

    //     // v.classList.remove("show_content");
    //     // v.classList.add("hide_content");})
    // if (show_contents.length===1) {
    //   hide_contents.forEach(v => {
    //     v.classList.toggle("show_content");
    //     // v.classList.add("show_content");})
    // })}
    // else {

    //   show_contents.forEach(v=>{
    //     v.classList.toggle("hide_content")
    //     // v.classList.remove("show_content");
    //     // v.classList.add("hide_content");})
    // })}
  }
)});

헤메는 과정이라 주석이 꽤 많다. 

 

c. 해결방법

처음부터 다시 되돌아가서 코드를 작성했다. 

// const plus_btn = document.querySelector(".plus-icon");
// const minus_btn = document.querySelector(".minus-icon");
// plus_btn.classList.add("hide_content")

let show_contents = document.querySelectorAll(".show_content");
let hide_contents = document.querySelectorAll(".hide_content");
// console.log(hide_contents)
const btns = document.querySelectorAll(".question-btn");
btns.forEach(function(btn) {
  btn.addEventListener('click',function() {
    show_contents = document.querySelectorAll(".show_content");
    hide_contents = document.querySelectorAll(".hide_content");
    if (show_contents.length===1) {
      hide_contents.forEach(v => {
        v.classList.toggle("show_content");
        // v.classList.add("show_content");})
    })}
    else {

      show_contents.forEach(v=>{
        v.classList.toggle("hide_content")
        // v.classList.remove("show_content");
        // v.classList.add("hide_content");})
    })}
  }
)})

 

위에 처럼 if,else문으로 수정했다. 

완벽하게 해결된 것은 아니지만 우선 기능 구현은 가능하다.

반응형