• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 장바구니 기능과 localStorage 숙제 질문입니다.

장바구니 기능과 localStorage 숙제 질문입니다.

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #115173

    권보령
    참가자
    안녕하세요
    장바구니 기능과 localStorage 숙제 수강 중 질문이 있어서 글 남깁니다.
    
    구매 버튼 누르면 상품명을 localStorage에 저장하는 숙제를 자바스크립트로만 구현하고 싶은데
    배열[ ] 안에 상품명이 저장이 안됩니다...
    console로 찍어보면 상품명이 잘 선택되는데 왜 이런 걸까요ㅠㅠㅠ
    
    document.querySelectorAll('.buy')[0].addEventListener('click', function(e) {
        // 구매 버튼의 윗윗 글자(상품명)를 가져와서
        // var title = document.querySelectorAll('.buy')[0].previousElementSibling.previousElementSibling;
        var title = e.target.previousElementSibling.previousElementSibling;
        
        console.log(title);
        localStorage.setItem('cart', JSON.stringify([title]));
        // if (localStorage.getItem('cart') != null) { // 1. 이미 cart라는 항목이 있으면 수정
        //     // 1. 데이터를 꺼내서
        //     // 2. 데이터를 수정하고
        //     // 3. 다시 넣기
        // } else {  // 2. 그게 아니면 or 맨 처음 접속이면
        //     localStorage.setItem('cart', JSON.stringify([title]));
        // }
    });
    #115202

    codingapple
    키 마스터
    title 변수는 문자 맞나 콘솔창에 에러는 안뜨나 확인해봅시다
    #115335

    권보령
    참가자
    .innerHTML을 붙였더니 해결됐습니다!!
    
    질문이 또 생겼습니다.........
    for문을 이용해서 짜고 싶은데
    같은 상품의 구매 버튼을 누르면 이미 배열에 있는 상품명이 중복으로 계속 추가됩니다
    어떻게 막아야 하는지 감이 안 옵니다ㅠㅠ
    for (let i = 0; i < 3; i++) {
        document.querySelectorAll('.buy')[i].addEventListener('click', function(e) {
            // 2. 구매 버튼의 윗윗 글자(상품명)를 가져와서 (e.target.previousElementSibling.previousElementSibling.innerHTML;)
            let title = e.target.previousElementSibling.previousElementSibling.innerHTML;
            // 3. localStorage에 [상품명] 저장
            // 1. 이미 cart라는 항목이 있으면 수정하기
            if (localStorage.getItem('cart') != null) { 
                // (1) 데이터를 꺼내서
                var getCart = JSON.parse(localStorage.getItem('cart'));
                // (2) 데이터를 수정하기 (상품명 추가)
                // .push() : array 배열에 내용 추가
                getCart.push(title)
                
                // (3) 다시 저장하기
                localStorage.setItem('cart', JSON.stringify(getCart));
            } else {  // 2. 그게 아니면 or 맨 처음 접속이면
                localStorage.setItem('cart', JSON.stringify([title]));
            }
        })
    };
    #115346

    codingapple
    키 마스터
    getCart 에서 title이 이미 있나 찾아보고 있으면 .push말고 +1만 하라고 코드짭시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠