[자바스크립트] null 값을 0으로 바꾸기

Gammi·2022년 12월 19일
0

JS

목록 보기
20/22

null은 맞는데 정확하게 null은 아닌...마치 내꺼인 듯 내꺼 아닌 내꺼 같은



➕ 230118 추가

수업시간에 파라미터 넘기는 이야기하다가 선생님이 흘리듯이 이것도 설명해주셨는데 ""이 넘어온다고 하셨다!

널스트링이 넘어가는 거니까 어쨌든 null 아닌 건 맞네ㅎㅎ

가 아니고


널스트링이 넘어와서 형변환을 못해서 NULL 오류가 생기는 거라고 했음



""은 int 타입으로 형변환을 못하니까?

마침 오류도 NullPointerException이 아니라 NumberFormatException이었음!



그러면 null을 0으로 바꾸는 방법이라기보다는 "" 대신 0을 넘기는 방법이라고 하는 게 더 맞을 것 같다ㅎㅎ



int타입 데이터에 아무 값도 넣지 않고 폼파라미터를 넘기게 되면 오류가 발생하는데

아무 값도 넣지 않는 대신 0을 넣어 오류가 생기지 않도록 하는 것이다.


물론 0 대신 다른 값을 넣어도 됨!

나는 할인율 적용에 쓸 거라서 할인 없는 상태 = 0으로 만드는 작업을 위해 0으로 설정했다.




⭐ html

<tr>
  <th>판매가 & 할인</th>
  <td>
    <input type="number" required="required" name="price"><br>
    <hr>
    <input type="radio" checked="checked" name="disc" onclick="discountSet()">할인 설정
    <input type="radio" name="disc" onclick="discountSet()">할인 설정 안함<br>
    <div id="disArea">
      <input type="number" id="nd" min="1" max="100" onkeyup="disKeyup(this.value)">% 할인
    </div>
    <input type="hidden" id="discount" name="discount">
  </td>
</tr>

  • 참고 )

    할인율 입력 텍스트 박스 말고 input type=hidden으로 하나 더 만들어서 파라미터를 넘기는 건 할인 설정 안함 버튼 클릭 시에는 할인율 입력창을 보이지 않게 하기 위함임.

    만약, 위와 같이 입력창을 보이지 않게 하는 기능은 필요 없다면 밑의 자바스크립트 코드 부분에서 display='none'display='inline' 속성은 제거 가능

    대신 value=0으로만 해둘 경우 변경이 가능하기 때문에 readonly 속성을 추가하는 것을 추천!

    그런데 이렇게 하면 할인 설정 버튼 클릭 시에는 readonly 속성 없애고 value 값도 다시 적을 수 있도록 만들어줘야 함!

    function discountSet() {
     if(document.proRegi.disc[0].checked){
    	document.getElementById("nd").readOnly = false;
       document.getElementById("nd").value = "";
     }else {
       document.getElementById("nd").readOnly = true;
    	document.getElementById("nd").value = 0;
     }
    }

⭐ javascript

function discountSet() {
  if(document.proRegi.disc[0].checked){
  // 라디오버튼 값을 배열로 받아옴
	document.getElementById("disArea").style.display = 'inline';
  }else {
    document.getElementById("disArea").style.display = 'none';
	document.getElementById("discount").value = 0;
    // 할인 설정 안함 버튼 클릭 시 value 값 0으로 설정
  }
}
profile
개발자가 되었어요⭐️

0개의 댓글