2026, 새로운 도약을 시작합니다.

2중 셀렉트박스 수정할 때 값 가져오기 질문드립니다. 채택완료

1차 선택 셀렉트박스

Copy




            참가부문

            

                참가부문

                 

                 

                 

            

            ※ 어린이 : 초등학생, 청소년 : 중·고교생, 성인 : 20세 이상 

        

2차선택 셀렉트박스

Copy




            

            

            function categoryChange(e) {

                var book_a = ["신청할 도서를 선택하세요", "최숙희_네 기분은 어떤 색깔이니?", "권영세_동백나무가 웃다", "김상삼_약밤나무의 백 년 이야기"];

                var book_b = ["신청할 도서를 선택하세요", "김수빈_고요한 우연", "김선미_비스킷", "지혜_읽고 쓰고 내가 됩니다"];

                var book_c = ["신청할 도서를 선택하세요", "이슬아_가녀장의 시대", "김익한_거인의 노트", "박창원_오늘 보는 그제 뉴-쓰", "김혜진_툭복을 비는 마음"];

                var target = document.getElementById("book");

                var d = [];

                if(e.value == "어린이") d = book_a;

                else if(e.value == "청소년") d = book_b;

                else if(e.value == "성인") d = book_c;

                

                

                target.options.length = 0;

                for (var i = 0; i  d.length; i++) {

                    var opt = document.createElement("option");

                    opt.value = d[i];

                    opt.innerHTML = d[i];

                    target.appendChild(opt);

                }

            }

            

            신청 도서명

            

                신청할 도서를 선택하세요

                >권영세_동백나무가 웃다

                >김수빈_고요한 우연

                >지혜_읽고 쓰고 내가 됩니다

                >김익한_거인의 노트

                >김혜진_툭복을 비는 마음

            

        

위 코드로 글 작성하고 수정할 때 입력했던 부분까진 잘 가져 옵니다.

근데 문제는 예를들어 '어린이'일 때 연동된 2차 셀렉트박스의 내용만 들고와야 하는데 지금의 경우엔 전체 목록을 다 보여주고 있습니다.

수정할 때 1차 셀렉트 박스의 내용에 맞게 2차 셀렉트 박스의 내용만 보여주려면 어딜 수정해야 될까요?

답변 2개

채택된 답변
+20 포인트

다음 코드가 도움이 될지 모르겠습니다.

Copy




 



            참가부문

            

                참가부문

                 

                 

                 

            

            ※ 어린이 : 초등학생, 청소년 : 중·고교생, 성인 : 20세 이상 

        



            

            

            var option_data = ;

            function categoryChange(e) {

                var d = [];

                for (var k in option_data) {

                    if (e.value == k) {

                        d = option_data[k];

                    }

                }

                var target = document.getElementById("book");

                

                target.options.length = 0;

                target.options[0] = new Option('신청할 도서를 선택하세요', '');

                for (var i = 0; i  d.length; i++) {

                    target.options[i + 1] = new Option(d[i], d[i]);

                }

            }

            

            신청 도서명

            

                신청할 도서를 선택하세요

                

            

        

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

개인적으로 알지는 못하지만 배르만님께서는 천재임이 틀림없어보입니다 !!!! 감사합니다!!

댓글을 작성하려면 로그인이 필요합니다.

Copy


window.onload = function(){

    var e = document.getElementById('wr_4');

    var text = e.options[e.selectedIndex].value;

    var event = new Event('change', { bubbles: true });

    e.dispatchEvent(event);

}

이 스크립트를 추가하니까 1차에서 선택한 값에 대응하는 2차 셀렉트박스 내용만 들고오긴 한데... 기존에 선택된 내용이 사라지네요 ㅎㅎ;;

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고