자바스크립트 부분에 한번 더 물어보겠습니다.

자바스크립트 부분에 한번 더 물어보겠습니다.

QA

자바스크립트 부분에 한번 더 물어보겠습니다.

본문

지금 시험삼아 제작중인 사이트에 계산기 관련 폼을 만들고 있습니다.

 

먼저 질문드리고 싶은것은...

 

band2.png 

 

1, 위에 셀렉트박스에서 요금제 중 하나를 선택합니다.

 

band1.png  

2, 첫번째 셀렉트박스에서 band 종류 요금제를 선택하면 2번째 사진처럼 하단에 셀렉트박스가 생깁니다.

 

band3.png 

3, t 끼리 요금제를 선택하면 셀렉트를 3개선택 하는 셀렉트가 보입니다.

 

저는 이렇게 하단 셀렉트박스에서

 

예를 들면...

12121.png 

 

복지할인을 클릭하고 온가족 할인 10년이상 을 셀레트박스에서 선택하면 위에 요금 금액이

바뀌게 하고 싶습니다.

<table class="sit_ov_tbl">
        <colgroup>
            <col class="grid_3">
            <col>
        </colgroup>
        <tbody>
       <tr id="it_t_bandtype" style="display:none">
            <th scope="row">SK 온가족할인</th>
            <td>
   <form id="form1" name="form1" method="post" action="">
             <select name="it_t_bandtype" id="it_t_bandtype1" onChange="show3();">
     <option value="0">미적용</option>
     <option value="1">온가족할인 10년이상 (10%}</option>
     <option value="2">온가족할인 20년이상 (20%}</option>
    <option value="3">온가족할인 30년이상(50%}</option>
             </select>
            </form>
      </td>
        </tr>
   <tr id="it_bandtype">
            <th scope="row">SK 온가족할인</th>
            <td>
   <form id="form1" name="form1" method="post" action="">
             <select name="it_bandtype1" id="it_bandtype1"onChange="show3(this.value);">
     <option value="0">미적용</option>
     <option value="1">온가족할인 10년이상 (10%}</option>
     <option value="2">온가족할인 20년이상 (20%}</option>
    </select>
            </form>
      </td>
        </tr>
  
  <tr>
            <th scope="row">복지할인</th>
            <td><input  type="checkbox" name="halin2" value="1"  id="halin02"onClick="show3();" >  할인35% <br ></td>
         </tr>
   <tr>
            <th scope="row">부과세+할부이자</th>
            <td><input  type="checkbox" name="chek" value="1" id="chek01" onClick="show3();" ><br ></td>
         </tr>
  </tbody>
 </table>

 

이게 체크버튼과 셀렉트 박스 입니다.

스크립트 부분은

 

 

function show3() {
    var halin02 = document.getElementById("halin02").checked;
    var chek01 = document.getElementById("chek01").checked;
    var sk1 = document.getElementById("it_bandtype1").value;
    var sk2 = document.getElementById("it_t_bandtype1").value;
       

    
   // 모든 가격 숨기기.
    document.getElementById("change7").style.display="none";
  document.getElementById("change9").style.display="none";
    document.getElementById("change10").style.display="none";
    document.getElementById("change11").style.display="none";
 document.getElementById("change12").style.display="none";
 document.getElementById("change13").style.display="none";
    document.getElementById("change14").style.display="none";
   document.getElementById("change15").style.display="none";
    document.getElementById("change16").style.display="none";
 
  
    if( halin02 == true && chek01 == false) {
       // 복지할인만
    document.getElementById("change6").style.display="none";
   document.getElementById("change7").style.display="none";
   document.getElementById("change10").style.display="";
   document.getElementById("change11").style.display="none";
  
   document.getElementById("change12").style.display="";
   document.getElementById("change13").style.display="none";
   document.getElementById("change8").style.display="none";
   document.getElementById("change8").style.display="none";

   document.getElementById("change14").style.display="none";
   document.getElementById("change15").style.display="none";

 


    }else if( halin02 == false && chek01 == true) {
       // 부과세만.
       document.getElementById("change7").style.display="";
    document.getElementById("change6").style.display="none";
    document.getElementById("change10").style.display="none";
    document.getElementById("change11").style.display="none";
         
       document.getElementById("change9").style.display="";
       document.getElementById("change8").style.display="none";
       document.getElementById("change12").style.display="none";
       document.getElementById("change13").style.display="none";
   
    document.getElementById("change14").style.display="none";
    document.getElementById("change15").style.display="none";

    document.getElementById("change16").style.display="none";
 }else if( halin02 == true && chek01 == true) {
       // 복지할인 + 부과세
      document.getElementById("change11").style.display="";
      document.getElementById("change6").style.display="none";
      document.getElementById("change7").style.display="none";
      document.getElementById("change10").style.display="none";

   document.getElementById("change13").style.display="";
      document.getElementById("change8").style.display="none";
      document.getElementById("change9").style.display="none";
      document.getElementById("change12").style.display="none";
     
   document.getElementById("change14").style.display="none";
   document.getElementById("change15").style.display="none";

   document.getElementById("change16").style.display="none";

 

   }else if( sk1 =='1' ) {
       // 온가족할인 band 요금제 10%
   
      document.getElementById("change11").style.display="none";
      document.getElementById("change6").style.display="none";
      document.getElementById("change7").style.display="none";
      document.getElementById("change10").style.display="none";


   document.getElementById("change13").style.display="none";
      document.getElementById("change8").style.display="none";
      document.getElementById("change9").style.display="none";
      document.getElementById("change12").style.display="none";
 
    document.getElementById("change14").style.display="";
   document.getElementById("change15").style.display="none";

   document.getElementById("change16").style.display="none";
    
   }else if (sk1=='2' && chek01 == true) {
            alert("ddddd");
     
      document.getElementById("change11").style.display="none";
      document.getElementById("change6").style.display="none";
      document.getElementById("change7").style.display="none";
      document.getElementById("change10").style.display="none";

      
   document.getElementById("change13").style.display="none";
      document.getElementById("change8").style.display="none";
      document.getElementById("change9").style.display="none";
      document.getElementById("change12").style.display="none";

      document.getElementById("change14").style.display="none";
      document.getElementById("change15").style.display="";

   document.getElementById("change16").style.display="none";

  }else if (sk2=='1') {
         alert("ddddd");
     
      document.getElementById("change11").style.display="none";
      document.getElementById("change6").style.display="none";
      document.getElementById("change7").style.display="none";
      document.getElementById("change10").style.display="none";

      
   document.getElementById("change13").style.display="none";
      document.getElementById("change8").style.display="none";
      document.getElementById("change9").style.display="none";
      document.getElementById("change12").style.display="none";

      document.getElementById("change14").style.display="none";
      document.getElementById("change15").style.display="none";

   document.getElementById("change16").style.display="";

 

위에 처럼 있습니다.

 

document.getElementById("change16").style.display="";

 

이렇게 스타일로 정해진것들은..

 

  <h2 style="padding:15px; font-size:14px; color:#fff; text-align:center; background-color:#30292f;" >월 납부금액<br /><font style="font-size:12px; color:#b5afb4;">월할부금 + 월 통신요금</font></h2>
      
       <tr id="change6" >
         <td align="center" style="padding:10px; background-color:#f9f9f9;"><font style="font-size:22px; color:#f65672;"><span id="a6"> 0</span></font> 원</td> <!--부과세 미포함 공시지원금 실납부액-->
   </tr>
    <tr id="change7" style="display:none" >
         <td align="center" style="padding:10px; background-color:#f9f9f9;"><font style="font-size:22px; color:#f65672;"><span id="a9"> 0</span></font> 원</td><!--부과세 포함 공시지원금 실납부액-->
   </tr>

 

위에 처럼 요금이 나오게 하기위한 효과를 준것이고..

이 요금은 db에 저장되어있으며...그값을 불러오는 소스는

 

<script>
function bandtype1(v){
     var a;
     var b;
     var c;
  var d;
  var e;
  var f;
  var g;
  var h;
  var i;
  var j;
     var k;
     var l;
  var n;
  var n1;
  var n2;
  var e1;
  var e2;
  var o;
  var pub1;
     var pub2;
  var pub3;
  var pub4;
  var pub5;
  var pub6;
  var pub7;
  var pub8;
   var band1;
   var band2;
   var band3;
   var tband1;


  switch(v){
  case '1' : a= "<?=number_format($it['it_support29']); ?>"; break;                                               //밴드요금제 선택시 요금제별로 값이 바뀌는 함수.
        case '2' : a ="<?=number_format($it['it_support36']); ?>"; break;
  case '3' : a ="<?=number_format($it['it_support42']); ?>"; break;
  case '4' : a ="<?=number_format($it['it_support47']); ?>"; break;
  case '5' : a ="<?=number_format($it['it_support51']); ?>"; break;
  case '6' : a ="<?=number_format($it['it_support59']); ?>"; break;
  case '7' : a ="<?=number_format($it['it_support69']); ?>"; break;
  case '8' : a ="<?=number_format($it['it_support80']); ?>"; break;
  case '9' : a ="<?=number_format($it['it_support100']); ?>"; break;                                                
        case '10' : a ="<?=number_format($it['it_t_support35']); ?>"; break;
  case '11' : a ="<?=number_format($it['it_t_support45']); ?>"; break;
  case '12' : a ="<?=number_format($it['it_t_support55']); ?>"; break;
  case '13' : a ="<?=number_format($it['it_t_support69']); ?>"; break;
  case '14' : a ="<?=number_format($it['it_t_support80']); ?>"; break;
  case '15' : a ="<?=number_format($it['it_t_support85']); ?>"; break;
  case '16' : a ="<?=number_format($it['it_t_support100']); ?>"; break;
        default : a = 0; break;  //공시지원금
    }
 switch(v){
  case '1' : b= "<?=number_format($it['it_support29_2']); ?>"; break;                                         
        case '2' : b ="<?=number_format($it['it_support36_2']); ?>"; break;
  case '3' : b ="<?=number_format($it['it_support42_2']); ?>"; break;
  case '4' : b ="<?=number_format($it['it_support47_2']); ?>"; break;
  case '5' : b ="<?=number_format($it['it_support51_2']); ?>"; break;
  case '6' : b ="<?=number_format($it['it_support59_2']); ?>"; break;
  case '7' : b ="<?=number_format($it['it_support69_2']); ?>"; break;
  case '8' : b ="<?=number_format($it['it_support80_2']); ?>"; break;
  case '9' : b ="<?=number_format($it['it_support100_2']); ?>"; break;                                                
        case '10' : b ="<?=number_format($it['it_t_support35_2']); ?>"; break;
  case '11' : b ="<?=number_format($it['it_t_support45_2']); ?>"; break;
  case '12' : b ="<?=number_format($it['it_t_support55_2']); ?>"; break;
  case '13' : b ="<?=number_format($it['it_t_support69_2']); ?>"; break;
  case '14' : b ="<?=number_format($it['it_t_support80_2']); ?>"; break;
  case '15' : b ="<?=number_format($it['it_t_support85_2']); ?>"; break;
  case '16' : b ="<?=number_format($it['it_t_support100_2']); ?>"; break;
        default : b = 0; break;  //나나모바일 지원금
    }
  switch(v){
  case '1' : c= "<?=number_format ($it['it_base29']); ?>"; break;                                         
        case '2' : c ="<?=number_format ($it['it_base36']); ?>"; break;
  case '3' : c ="<?=number_format ($it['it_base42']); ?>"; break;
  case '4' : c ="<?=number_format ($it['it_base47']); ?>"; break;
  case '5' : c ="<?=number_format ($it['it_base51']); ?>"; break;
  case '6' : c ="<?=number_format ($it['it_base59']); ?>"; break;
  case '7' : c ="<?=number_format ($it['it_base69']); ?>"; break;
  case '8' : c ="<?=number_format ($it['it_base80']); ?>"; break;
  case '9' : c ="<?=number_format ($it['it_base100']); ?>"; break;                                                
        case '10' : c ="<?=number_format ($it['it_t_base35']); ?>"; break;
  case '11' : c ="<?=number_format ($it['it_t_base45']); ?>"; break;
  case '12' : c ="<?=number_format ($it['it_t_base55']); ?>"; break;
  case '13' : c ="<?=number_format ($it['it_t_base69']); ?>"; break;
  case '14' : c ="<?=number_format ($it['it_t_base80']); ?>"; break;
  case '15' : c ="<?=number_format ($it['it_t_base85']); ?>"; break;
  case '16' : c ="<?=number_format ($it['it_t_base100']); ?>"; break;
        default : c = 0; break;  //기본료
    }

 

 document.getElementById("a6").innerHTML = f;
  document.getElementById("a7").innerHTML = g;
 document.getElementById("a1").innerHTML = a;
 document.getElementById("a2").innerHTML = b;
 document.getElementById("a3").innerHTML = c;
 document.getElementById("b1").innerHTML = c;
 document.getElementById("a4").innerHTML = d;
 document.getElementById("a5").innerHTML = e;
 document.getElementById("a10").innerHTML = j;
 document.getElementById("a11").innerHTML = k;
 document.getElementById("a12").innerHTML = l ;

}

}

 

위에 같은 방식으로 스크립트를 만들었습니다.

그리고 이 스크립트는

 

<tr>
            <th scope="row">요금제선택</th>
            <td>
   <form id="form1" name="form1" method="post" action="">
             <select name="select" id="select" onChange="bandtype1(this.value)">
     <option value="0" selected>요금제선택</option>
     <option value="1">band 데이터 29</option>
     <option value="2">band 데이터 36</option>
     <option value="3">band 데이터 42</option>
     <option value="4">band 데이터 47</option>
     <option value="5">band 데이터 51</option>
     <option value="6">band 데이터 59</option>
     <option value="7">band 데이터 69</option>
     <option value="8">band 데이터 80</option>
     <option value="9">band 데이터 100</option>
     <option value="10">T끼리 35</option>
     <option value="11">T끼리 45</option>
     <option value="12">T끼리 55</option>
     <option value="13">T끼리 69</option>
     <option value="14">T끼리 80</option>
     <option value="15">T끼리 85</option>
     <option value="16">T끼리 100</option>
             </select>
            </form>
      </td>
        </tr>

 

제일 처음 사진에 나오는 셀렉트박스에서 하나하나 선택하면 ..

작동되게 되어있습니다.

 

즉...제가 궁금한것은

else if (sk1=='2' && chek01 == true) {
            alert("ddddd");

이렇게 함수를 만들어서...

복지할인 체크하고 셀렉트박스에서 선택하면 그 값이 요금금액이 나오게 하는건데..

셀렉트박스와 체크박스는 동시에 저렇게 함수를 주면 안 먹히는 건가요? 

이 질문에 댓글 쓰기 :

답변 2

네.. 저렇게 구성하는 방식은 옳지 않습니다.

if... else if...else

라고 구문은 예를 들어서 sk1==1 이라는 것인 if문이면 sk1이 1이 아닌 2나 3인 경우가 else if가 되는 것이고

sk1이 1, 2, 3 이 아닌 다른 값이 else 가 되는 겁니다.

지금처럼 sk1 뿐만 아니라 chek01 에 대한 부분도 같이 처리하기 위해서는

sk1인 경우에 che01값이 얼마이냐 처럼 단일 if문이 아닌 이중 if(즉, if문안에 if문)문 형식으로 조건을 비교해야 정상 작동할 것입니다. 

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

회원로그인

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