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

home2 게시판 JavaScript, TS 게시판 1차 셀렉트값 변경시 2차 셀렉트값 변경

1차 셀렉트값 변경시 2차 셀렉트값 변경

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

    허희주
    참가자
     <form class="container my-5 form-group">
            <p>상품선택</p>
            <select class="form-select mt-2 product-choice">
              <option value = 'hats'>모자</option>
              <option value = 'shirts'>셔츠</option>
            </select>
            <select name="" id="" class="product-detail">
            </select>
        </form>
        <script>
            let products = document.querySelector('.product-choice');
            let details = document.querySelector('.product-detail');   
            
            let detailsArr = [
                {products : '모자', option:['small', 'medium', 'large']},
                {products : '셔츠', option:[90, 95, 100, 105]}
            ];
            function choice(){
                if(products.value == 'hats'){ 
                    detailsArr[0].option.forEach(function(el) { 
                        let options = document.createElement('option');                  
                        options.innerHTML = `${el}`;
                        details.append(options);
                    });  
                }else if(products.value == 'shirts'){
                    detailsArr[1].option.forEach(function(el) {
                        let options = document.createElement('option');
                        options.innerHTML = `${el}`;
                        details.append(options);
                    });   
                }
            }
            choice();
            products.addEventListener('change', function(){
                choice();
            });
           
        </script>
    
    
    1차 셀렉트 값 변경될때마다 2차 셀렉트 option값을 변경시키는 소스인데요
    select 박스 값이 변경되면 option값이 누적되어 추가됩니다 
    어떻게 처리해야 하나요? 
    
    
    #39706

    codingapple
    키 마스터
    선택시 select안의 html을 싹 비우고 append하라고 코드짜면 될듯요
    #39714

    허희주
    참가자
     let detailsArr = [
                {prod : 'hats', option:['small', 'medium', 'large']},
                {prod : 'shirts', option:[90, 95, 100, 105]},
                {prod : 'bottom', option:[28,30,32,34,36,38]},
                {prod : 'dress', option:['white', 'pink', 'green', 'black']},
            ];
            function choice(){
                while ( details.hasChildNodes() ){
                    details.removeChild( details.firstChild );       
                }
                detailsArr.forEach(function(el, i){
                    if(el.prod == products.value){
                        let opt = el.option;
                        opt.forEach(function(al){
                            let options = document.createElement('option'); 
                            options.innerHTML = `${al}`;
                            details.appendChild(options);
                        });
                    }
                });
            }
            choice();
            products.addEventListener('change', function(){
                choice();
            });
    
    검색해서 지우는거 넣고 반복되는 부분이 많은것 같아 다시 수정햇습니다
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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