Inflearn brand logo image

인프런 커뮤니티 질문&답변

안연수님의 프로필 이미지
안연수

작성한 질문수

웹 프론트엔드를 위한 자바스크립트 첫걸음

북마크 아이템 추가하기

북마크 추가 버튼 활성화 오류 문의드립니다!

해결된 질문

작성

·

61

·

수정됨

0

세션 7 6.북마크 아이템 추가하기

  • 북마크 추가 버튼을 클릭해도 이름, 주소, 취소, 추가 활성화되지 않고 있습니다.

  • 어떠한 코드 오류가 있는 지 오류 코드 체크해주세요!

const newBookmarkForm = document.getElementById("bookmark-item-input-form");

let bookmarkList = [];
if (localStorage.getItem("bookmarkList")) {
  bookmarkList = JSON.parse(localStorage.getItem("bookmarkList"));
} else {
  localStorage.setItem("bookmarkList", JSON.stringify(bookmarkList));
}

const addBookmarkItem = () => {
  let bookmarkList = [];
  if (localStorage.getItem("bookmarkList")) {
    bookmarkList = JSON.parse(localStorage.getItem("bookmarkList"));
  }
  let name = document.getElementById("new-bookmark-name-input").value;
  let url = document.getElementById("new-bookmark-url-input").value;
  let createAt = Date.now();
  bookmarkList.push({ name: name, url: url, createAt: createAt });
  localStorage.setItem("bookmarkList", JSON.stringify(bookmarkList));
  document.getElementById("new-bookmark-name-input").value = "";
  document.getElementById("new-bookmark-url-input").value = "";
  newBookmarkToggle();
};

let isAddBtnClick = false;
newBookmarkForm.style.display = "none";

const newBookmarkToggle = () => {
  isAddBtnClick = !isAddBtnClick;
  isAddBtnClick
    ? (newBookmarkForm.style.display = "block")
    : (newBookmarkForm.style.display = "none");
};

document
  .getElementById("bookmark-item-add-btn")
  .addEventListener("click", newBookmarkToggle);

document.getElementById("add-btn").addEventListener("click", addBookmarkItem);
document
  .getElementById("cancel-btn")
  .addEventListener("click", newBookmarkToggle);
(function () {
  const bookmarkBar = document.getElementById("bookmark-bar");
  const bookmarkOpen = document.getElementById("bookmark-open");
  const bookmarkClose = document.getElementById("bookmark-close");

  const isBookMarkBarOpen = localStorage.getItem("isBookMarkBarOpen");
  if (isBookMarkBarOpen === "close") {
    bookmarkBar.style.display = "none";
    bookmarkOpen.style.display = "none";
    bookmarkClose.style.display = "flex";
  } else {
    bookmarkBar.style.display = "block";
    bookmarkOpen.style.display = "flex";
    bookmarkClose.style.display = "none";
  }

  const bookmarkBarToggle = () => {
    const isBookMarkBarOpen = localStorage.getItem("isBookMarkBarOpen");
    if (isBookMarkBarOpen === "close") {
      localStorage.setItem("isBookMarkBarOpen", "open");
      bookmarkBar.style.display = "block";
      bookmarkOpen.style.display = "flex";
      bookmarkClose.style.display = "none";
      return;
    }
    localStorage.setItem("isBookMarkBarOpen", "close");
    bookmarkBar.style.display = "none";
    bookmarkOpen.style.display = "none";
    bookmarkClose.style.display = "flex";
  };

  document
    .getElementById("bookmark-open-btn")
    .addEventListener("click", bookmarkBarToggle);
  document
    .getElementById("bookmark-close-btn")
    .addEventListener("click", bookmarkBarToggle);
})();
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap"
      rel="stylesheet"
    />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>newtab</title>
    <link rel="stylesheet" href="./css/main.css" />
  </head>
  <body>
    <div class="main-container">
      <div class="main-wrapper">
        <div class="today-info">
          <div class="date" id="date">
            <!-- 날짜&요일 -->
          </div>
          <div class="time" id="time">
            <!-- 현재 시간 -->
          </div>
        </div>
        <div class="search">
          <input
            id="search-input"
            autocomplete="off"
            placeholder="검색어를 입력하세요"
          />
        </div>
      </div>
      <div class="quote" id="quote">
        <!-- 명언 -->
      </div>
    </div>
    <div class="bookmark-open" id="bookmark-open">
      <div id="bookmark-open-btn">북마크 닫기</div>
    </div>
    <div class="bookmark-close" id="bookmark-close">
      <div id="bookmark-close-btn">북마크 열기</div>
    </div>
    <div class="bookmark-bar" id="bookmark-bar">
      <!-- 북마크바 -->
      <div class="bookmark-item-add-btn">+ 북마크 추가</div>
      <div class="bookmark-item-input-form" id="bookmark-item-input-form">
        <div class="bookmark-input">
          <div class="new-bookmark-name">
            <div class="label">이름</div>
            <input id="new-bookmark-name-input" />
          </div>
          <div class="new-bookmark-url">
            <div class="label">주소</div>
            <input id="new-bookmark-url-input" />
          </div>
        </div>
        <div class="bookmark-item-input-btn">
          <div class="cancel-btn" id="cancel-btn">취소</div>
          <div class="add-btn" id="add-btn">추가</div>
        </div>
      </div>
    </div>
    <script src="./js/clock.js"></script>
    <script src="./js/search.js"></script>
    <script src="./js/quote.js"></script>
    <script src="./js/bookmark-toggle.js"></script>
    <script src="./js/bookmark.js"></script>
  </body>
</html>

답변 1

1

효빈 Hyobin님의 프로필 이미지
효빈 Hyobin
지식공유자

<div class="bookmark-item-add-btn">+ 북마크 추가</div>에 id가 없습니다.
자바스크립트 코드에서는 id를 기준으로 div 요소를 가지고 오고 있기 때문에, id="bookmark-item-add-btn"를 추가해주세요!!

안연수님의 프로필 이미지
안연수
질문자

감사합니다! 해결 완료 했습니다!

안연수님의 프로필 이미지
안연수

작성한 질문수

질문하기