그누는 아니지만.. 자바스크립트 질문 하나요. ㅠ
관련링크
본문
안녕하세요.
http://eonplace.co.kr/sub/sub04_01.html?ptype=view&idx=5548&page=1&code=interior01
위 주소인데요
오른쪽에 체크박스를 클릭하면 합계금액에 값이 ++ 되구요
라디오버튼을 클릭하면 20평형대는 *1, 30평은 *.1.5, 40평은 *2를 하는 간단한 기능입니다.
그런데... 아래 이미지에 설명드렸듯
2가지 문제가 있습니다.
1. 30평은 *1.5 (곱하기 1.5)가 되야하는데., 자바스크립트 소수점계산문제때문인지 안먹네요. ㅠ
2. 20평, 30평, 40평을 각각 클릭하면, 가격이 변해야하는데, 마지막 클릭한 가격에서 안바뀌고 있구요.
이걸 어찌 해결해야할까요? ㅠ
고수님들 봐주시면 감사..
답변 2
일단 html쪽에서 1,5를 1.5로 바꾸시면 값이 바뀌는걸 확인하실 수 있습니다..
<input type="radio" name="radio_select" class="chk" onClick="itemMulti(this.form,1.5);" /> <label for="chk">30평형대</label>
그리고 스크립트 단에서 폼의 value값가지고 계산하려고 하지말고, 체크박스용 변수를 따로 선언한다음에, 폼을 넣어야 값이 수시로 변동됩니다.
<script>
var item_sum;
function itemSum(frm)
{
var sum = 0;
var count = frm.chkbox.length;
for(var i=0; i < count; i++ ){
if( frm.chkbox[i].checked == true ){
sum += parseInt(frm.chkbox[i].value);
}
}
//frm.total_sum.value = sum;
item_sum = sum;
}
function itemMulti(frm,mval)
{
var mval2=Number(mval);
//frm.total_sum.value = frm.total_sum.value*mval2;
frm.total_sum.value = item_sum * mval2;
}
</script>
1. Float을 사용하세요. https://www.w3schools.com/jsref/jsref_parsefloat.asp
2. frm.total_sum.value 값이 변경되는 것은 위의 것을 선택할 때만..
즉 평형을 선택하면 이미 들어가 있는 값에 계속 곱해지게 됩니다.
평형을 선택할 때도 위의 합이 불러지게 만들면 될 것 같습니다.