테스트 사이트 - 개발 중인 베타 버전입니다

select 선택시 자동 계산되게 나오는 스크립트인데 왜 NaN 값이 나올가요? ㅠㅠ 채택완료

요고꽁 4년 전 조회 4,025

합계

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

답변 3개

채택된 답변
+20 포인트
Dessi
4년 전

</p>

<p><!--3개의 select 박스의 값을 더하는 스크립트 시작-->

<script language="JavaScript"></p>

<p>function calculatePay() {

var price1 = document.getElementById("select1").value;

var price2 = document.getElementById("select2").value;

var price3 = document.getElementById("select3").value;

document.mypay.pay.value =  parseInt(price1)+ parseInt(price2)+ parseInt(price3);

}

// -->

</script>

<!--3개의 select 박스의 값을 더하는 스크립트 끝-->

<!--아래와 같이 폼을 구성하세요-->

<form name=mypay method=POST>

<select size="1" name="select1" id ="select1" onChange="calculatePay()">

    <option value="0">선택하세요</option>

    <option value="100">100</option>

    <option value="200">200</option>

        <option value="300">300</option>

</select>
</p>

<p><select size="1" name="select2" id ="select2"   onChange="calculatePay()">

    <option value="0" selected>선택하세요</option>

    <option value="1000">1000</option>

    <option value="2000">2000</option>

</select>
</p>

<p><select size="1" name="select3" id ="select3" onChange="calculatePay()">

    <option value="0" selected>선택하세요</option>

    <option value="10000">10000</option>

    <option value="20000">20000</option>

        <option value="30000">30000</option>

  </select>


<input type=reset value="재계산">


합계

<input type=text name=pay size=15>원


</form>

<!--폼 구성 끝--></p>

<p>

 

이렇게 해보세요. 각 셀렉트박스에 id 값 추가

select1 선택하세요. value에 0 추가

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

답변에 대한 댓글 1개

요고꽁
4년 전
아 감사합니다. 잘 되네요 ^^

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

4년 전

</p>

<p><script>

function calculatePay() {

  var f = document.forms['mypay'];

  var price1 = eval(f.select1.options[f.select1.selectedIndex].value);

  var price2 = eval(f.select2.options[f.select2.selectedIndex].value);

  var price3 = eval(f.select3.options[f.select3.selectedIndex].value);

  f.pay.value = price1+price2+price3;

}

</script></p>

<p>

 

or

 

* jquery

</p>

<p><script>

function calculatePay() {

  var price1 = $('select[name=select1]').val();

  var price2 = $('select[name=select2]').val();

  var price3 = $('select[name=select3]').val();

  var sum = price1 + price2 + price3;

  $('input[name=pay]').val(sum);

}

</script></p>

<p>

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

답변에 대한 댓글 1개

0
0노드
1년 전
var랑 eval 쓰면 뚝빼기임

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

sad4u
4년 전

eval 보다 Number나 parseInt 함수를 쓰시는게 나을거 같네요.

정수 => Number(value), parseInt(value)

실수 => parseFloat(value)

 

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

답변에 대한 댓글 2개

요고꽁
4년 전
아 동일한데욤 ㅠㅠ
s
sad4u
4년 전
데이터 가져오는 방식부터 잘못된거 같은데요.
<select size="1" name="select1" onChange="calculatePay()"> 이부분을
<select size="1" id="select1" onChange="calculatePay()"> 이런식으로 변경하고

스크립트에서 계산하는 부분도
var price1 = document.getElementById("select1");
price1 = price1.options[price1.selectedIndex].value;

이런식으로 변경해서 해야 될거 같네요

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

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

로그인