2013-08-14 7 views
1

에서 작동하지 않는 나는 자바 스크립트에 정말 새로운 그리고 난 몇 가지 문제로 실행 해요 폼을 만들려고 그냥 뒤쪽으로 돌려 놓습니다. 예 : 5 + 10 (510)추가 자바 스크립트

여기에 내 코드가 있습니다. 나는 내 자신으로 이것을 이해할 수 없기 때문에 어떤 도움을 주셔서 감사합니다.

var service = document.getElementById("service"); 
var serviceprice = service.options[service.selectedIndex].id; 

var tech = document.getElementById("tech"); 
var techprice = tech.options[tech.selectedIndex].id; 

var hours = document.getElementById("hours").value; 

// The error happens here 
var total = techprice * hours + serviceprice; 

또한 스크립트에서 데이터를 가져 오는 HTML 부분이 있습니다.

답변

4

에 떠 변환합니다. + 연산자는 문자열에 대한 연결을 수행합니다. 당신이 parseFloat 또는 parseInt를 사용하여 숫자로 문자열을 구문 분석해야합니다 : parseInt베이스를 지정하는 인수를 취

var service = document.getElementById("service"); 
var serviceprice = parseInt(service.options[service.selectedIndex].id, 10); 
var tech = document.getElementById("tech"); 
var techprice = parseInt(tech.options[tech.selectedIndex].id, 10); 
var hours = parseInt(document.getElementById("hours").value, 10); 

하는 것으로. 거의 항상 기지 10을 원합니다.

+0

기본 10 음표에 +1. 그것은 제로를 받아 들였고베이스 8 숫자로 끝나면 두 번 이상 물 렸습니다. –

+2

그냥 재미있게 만들려면 다양한 문자열과 숫자 변환 함수의 속도를 비교하는 벤치 마크에 대한 링크를 참조하십시오. http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/13 –

+0

@ meewoK 멋지다. 또한 문자열을 숫자로 변환하는 방법에 대한 사전입니다. –

0

이 줄을 변경해보십시오 :

var total = techprice * hours + serviceprice; 

내가 'servicePrice'의심

var total = techprice * hours + parseFloat(serviceprice); 

에 문자열을, 그리고 그 다음 첫 번째 값을 연결하려고합니다 (의 말을하자 : 100)와 두 번째 값 (숫자가 아니고 문자열이지만 'test'라고 가정 해 봅시다)은 '100test'가됩니다.

0

봅니다 문자열이 처음 parseInt으로 int로 또는 문자열이 아닌 숫자있을 때마다 발생 parseFloat