선택옵션을 프로그램으로 직접 넣을 경우 .....sel_option_process

선택옵션을 프로그램으로 직접 넣을 경우 .....sel_option_process

QA

선택옵션을 프로그램으로 직접 넣을 경우 .....sel_option_process

본문

저희가 지금 몰 프로그램을 제작중입니다.

현재 영커트 5를 이용하고 있는데 

작업자가 중간에 퇴직 했습니다.


그런데 인수를 받은 사람이 들어가 보니 상품관리의 선택옵션을 사용하지 않고 직접 <select 문장을 만들어서 썻더군요

상위 선택에 따라 하위 선택의 옵션 내용이 다양하게 바뀌니까 그렇게 했나 봅니다.

또한 선택 옵션이 6개정도 됩니다. 이것을 모두 직접 자바스크립트로 코딩 햇습니다.


그래서 이를 인수받아 작업하는데 에러가 자꾸 터집니다.

 에러코드는 


shop.js:265 Uncaught TypeError: Cannot read property 'split' of undefined

    at sel_option_process (shop.js:265)

    at go_by_type1 (item.php?it_id=1498196896&type=1:1346)

    at HTMLImageElement.onclick (item.php?it_id=1498196896&type=1:1433)


그리고 소스프로그램은 

일부입니다. 


화면의 옵션부분입니다.


                        <tr>

                          <td style="width:150px;" class="itemform_title">

                            수량

                          </td>

                          <td>

                            <table style="width:100%;">

                              <td style="padding:8px;">

                                <input type=hidden name="subpage4" value="100">

                                <input id="buy_count" type="number" step=10 title="10부 단위" value=30 min=30 max=10000 class="radiinput" style="width:100%;" name="subpage_count4" onchange="my_calc(this)">

                                <input type=hidden name="subpage4_sum" size=6 readonly value="0">


                              </td>

                              <td style="width:10%;" class="itemform_title">

                                제본

                              </td>

                              <td style="width:40%;">

                                <input type=hidden name="subpage5" value="100">

                                <select id="jaebon" class="radiinput" style="width:96%;" name="subpage_count5" onchange="my_calc(this)">

                                  <option value="-">선택</option>

                                  <option value="100" price="100">무선</option>

                                  <option value="200" price="200">양장</option>

                                  <option value="300" price="300">중첩(50페이지미만)</option>

                                  <option value="400" price="400">스프링제본</option>

                                </select>

                                <input type=hidden name="subpage5_sum" size=6 readonly value="0">

                              </td>

                            </table>

                          </td>

                        </tr>



주문버튼시 처리부분 입니다.


                        function go_by_type1(btntype) {

                          var ordername = $("#ordername").val();

                          var size = $("#page_size option:selected").val();

                          var pagesize_tops = $("#pagesize_tops").val();

                          var pagesize_left = $("#pagesize_left").val();

                          var cover_page = $("#cover_page option:selected").val();

                          //var cover_page_gram = $("#cover_page_gram option:selected").val();

                          var wingprinttype = $(':radio[name="wingprinttype"]:checked').val();

                          //var innserpagetype      = $(':radio[name="innserpagetype"]:checked').val();

                          var buy_count = $("#buy_count").val();

                          var hugagong = "";


                          $("input[name=hugagong]:checked").each(function() {

                            if (hugagong == "") {

                              hugagong += $(this).val();

                            } else {

                              hugagong += "," + $(this).val();

                            }

                          });

                          var buy_qus = $("#buy_qus").val();


                          if (ordername == "") {

                            alert("주문명을 입력해주세요");

                          } else if (size == "-") {

                            alert("사이즈를 선택해주세요.");

                          }

                          /*else if(pagesize_tops > 594){

                                                         alert("사이즈 최대값을 초과하였습니다(최대(594x841))");

                                                     } else if(pagesize_left > 841){

                                                         alert("사이즈 최대값을 초과하였습니다(최대((594x841))");

                                                     }*/

                          else if (cover_page == "-") {

                            alert("용지를 선택해주세요.");

                          }

                          /*else if(cover_page_gram == "-"){

                                                         alert("평량을 선택해주세요.");

                                                     } */

                          else if (buy_count < 30 || buy_count > 10000) {

                            alert("주문가능 수량은 30~10000부 입니다");

                          } else {

                            $(".it_opt_del").click();

                            //추가금액 계산

                            var size_price = $("#page_size option:selected").attr("price");

                            var cover_page_price = $("#cover_page option:selected").attr("price");

                            //    var cover_page_gram_price = $("#cover_page_gram option:selected").attr("price");

                            var wingprinttype_price = $(':radio[name="wingprinttype"]:checked').attr("price");

                            var hugagong_price = 0;

                            $("input[name=hugagong]:checked").each(function() {

                              hugagong_price += parseInt($(this).attr("price"));

                            });


                            var priceSum =

                              parseInt(size_price) +

                              parseInt(cover_page_price) +

                              //        parseInt(cover_page_gram_price) +

                              parseInt(wingprinttype_price) +

                              parseInt(hugagong_price);

                            $("#it_option_1").find("option").each(function() {

                              if (priceSum == $(this).val().split(",")[0]) {

                                $('#it_option_1 option[value="' + $(this).val() + '"]').attr('selected', 'selected');

                              }

                            });


                            //수량 1개의 가격

                            var oneByPrice = priceSum;


                            var txt_ordername = $("#ordername").val();

                            var txt_size = $("#page_size option:selected").text();

                            var txt_cover_page = $("#cover_page option:selected").text();

                            //    var txt_cover_page_gram = $("#cover_page_gram option:selected").text();

                            var txt_wingprinttype = $(':radio[name="wingprinttype"]:checked').text();


                            var txt_hugagong = "";

                            $("input[name=hugagong]:checked").each(function() {

                              if (txt_hugagong == "") {

                                txt_hugagong += $(this).attr("textv");

                              } else {

                                txt_hugagong += "," + $(this).attr("textv");

                              }

                            });



                            //유효성 체크 완료 (카타록/브로슈어 주문시작)

                            if (btntype == "buy") {


                              sel_option_process(true);

                              $(".input-group .input-sm").val(buy_count);


                              price_calculate();

                              $("#it_sel_option .input-sm").each(function(index) {

                                  if (index == 1) {

                                    $(this).val(txt_ordername);

                                  }


                                  $("#it_sel_option .input-sm").each(function(index) {


                                    if (index == 2) {

                                      //주문내역

                                      var appendtext = "사이즈:" + txt_size;

                                      appendtext += " 용지:" + txt_cover_page;

                                      appendtext += " 인쇄:" + txt_wingprinttype;

                                      appendtext += " 후가공:" + txt_hugagong;


                                      $(this).val(appendtext);

                                    }

                                  });

                                  $("#it_sel_option .input-sm").each(function(index) {

                                    if (index == 3) {

                                      //요청사항

                                      $(this).val(buy_qus);

                                    }

                                  });




                                  $("#org_btn").click();

                                }


                                //유효성 체크 완료 (카타록/브로슈어 견적시작)

                                if (btntype == "pom") {

                                  oneByPrice = oneByPrice + 10000;

                                  $(".lists1").html("");

                                  $(".lists2").html("");

                                  $(".lists3").html("");

                                  $(".bigo").html("");

                                  $(".allpricet1").html("");

                                  $(".allpricet2").html("");

                                  $(".allpricet3").html("");

                                  $(".allpricet1").html((oneByPrice * 0.9) * buy_count);

                                  $(".allpricet2").html((oneByPrice * 0.1) * buy_count);

                                  $(".allpricet3").html(((oneByPrice * 0.9) + (oneByPrice * 0.1)) * buy_count);



                                  var appendtext = "<tr><td style = 'text-align:center;'>사이즈</td><td style = 'text-align:center;'>" + txt_size + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>용지</td><td style = 'text-align:center;'>" + txt_cover_page + "</td></tr>";

                                  //    appendtext += "<tr><td style = 'text-align:center;'>평량</td><td style = 'text-align:center;'>" + txt_cover_page_gram + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>인쇄</td><td style = 'text-align:center;'>" + txt_wingprinttype + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>수량</td><td style = 'text-align:center;'>" + buy_count + "</td></tr>";

                                  $(".lists1").append(appendtext);

                                  appendtext = "<tr><td>" + txt_hugagong + "</td></tr>";

                                  $(".lists2").append(appendtext);



                                  appendtext = "<tr><td style = 'text-align:center;'>사이즈</td><td style = 'text-align:right;'>₩" + size_price + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>용지</td><td style = 'text-align:right;'>₩" + cover_page_price + "</td></tr>";

                                  //    appendtext += "<tr><td style = 'text-align:center;'>평량</td><td style = 'text-align:right;'>₩" + cover_page_gram_price + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>인쇄</td><td style = 'text-align:right;'>₩" + wingprinttype_price + "</td></tr>";

                                  appendtext += "<tr><td style = 'text-align:center;'>후가공</td><td style = 'text-align:right;'>₩" + hugagong_price + "</td></tr>";

                                  $(".lists3").append(appendtext);

                                  $("#pom").fadeIn(400);


                                  $(".bigo").html(buy_qus);

                                }

                              }


                            }

                          }


                      </script>

                  <img src="http://www.digitaladone.com/skin/apms/item/board/img/button_estimate.jpg" onclick="go_by_type1('pom');" style="cursor:pointer;" />

                  <img src="http://www.digitaladone.com/skin/apms/item/board/img/button_order.jpg" onclick="go_by_type1('buy');" style="cursor:pointer;" />

                  <input type="submit" id="org_btn" onclick="document.pressed=this.value;" value="주문하기" class="btn btn-<?php echo $btn2;?> btn-lg" style="display:none;">


이때 위에서 sel_option_process() 펑션을 호출하면 


Uncaught TypeError: Cannot read property 'split' of undefined

    at sel_option_process (shop.js:265)

    at go_by_type1 (


 에러가 나옵니다.


사이즈가 커서 업로드가 어렵습니다.

연락 주시면 전달 드릴 수 있겠습니다.

참 이 문제를 해결해 주시면 그에 대한 사례 하겠습니다. 


*** 개인정보보호를 위한 휴대폰번호 노출방지 ***


이 질문에 댓글 쓰기 :

답변 2

에러 자체는 넘어가는 값이 문자형이 아니라서 split 함수가 호출 안되는 경우인데


코드 자체를 봐야 해결이 될거 같습니다.

가격,이름 <== 이런식으로 되어 있던 문자열을 다른식으로 입력하신건 아닌가요?


소스 보니 가격,이름 이부분에서 앞에 가격부분만 뽑아 비교하는 부분에서 에러가 발생하네요

답변을 작성하시기 전에 로그인 해주세요.
전체 123,672 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT