2012-10-21 2 views
0

주문 양식과 텍스트 상자 (수량 * 가격), 확인란 및 라디오에서 총계를 계산해야하는 자바 스크립트가 있지만 NaN 오류가 발생하여 누락되었습니다. 누군가 그것을 고칠 수 있을까요? 고마워요. 많은처럼자바 스크립트 양식 계산 결과 NaN

DEMO

+0

JS Bin에서 보여주는 5 가지 경고를 읽고 고쳐야합니다. –

+1

전체 개념은 계산 변수를 문자열로 시작한 다음 문자열을 연결하고 다른 문자열을 연결하는 것으로 결함이 있습니다. 콘솔을 사용하여 값을 볼 수 있습니다. 진짜 엉망입니다. – charlietfl

+1

'eval'을 사용하지 않고이 혼란을 고치려고하지 말고 처음부터 다시 써야합니다. 왜냐하면 지금 당신은 문자 그대로 사용자 입력 (양식 필드 값)을 자바 스크립트 코드로 실행하기 때문입니다! 그리고 문제를 해결하는 한 단계 (URL 매개 변수를 수락)입니다. – migg

답변

0

는 코드에 몇 가지 심각한 짧은 오심가 댓글을 달았습니다. 이러한 문제를 다시 반복하지는 않겠지 만 매우 중요하므로 사용하는 기술에 대해 더 많이 알게되면 배워야합니다.

이유는 NaN입니다. 필드 개체는 배열입니다. 귀하의 코드는 필드 배열을 임의의 색인에 채 웁니다. 즉, fields [f] = 0;

색인을 위해 배열을 채우는 경우 5라고 말하면 fields [5] = 0; 이 문을 사용하면 빈 배열 []을 가지지 않고 처음 5 개의 항목이 기본값 undefined [정의되지 않음, 정의되지 않음, 정의되지 않음, 정의되지 않음, 정의되지 않음, 0] 인 6 개의 항목이있는 배열로 이동했습니다.

나중에 합계를 계산하고 (문자열을 준비한 평가판을 사용하여) 배열 항목을 추가 할 때 코드에이 ... 정의되지 않음 + 0 + 정의되지 않음 + 8 ...은 번호가 아닙니다. 오류. 배열의 끝에 하나 개의 항목을 추가합니다

if (userInputs[f].value) 
{ 
    fields.push(userInputs[f].value); 
} 
else 
{ 
    fields.push(0); 
} 

푸시 :

대신,이를 방지하는 방법 중 하나는 푸시에 같은 필드 배열 위에 항목입니다. 푸시 (0) 인 경우 []은 [0]이됩니다.

+0

제안 해 주신 모든 분들께 감사 드리며, 저는이 양식을 풀기에 가까웠지만 분명히 저는 아닙니다. 이 시점에서 볼 수있는 유일한 해결책은 JavaScript 학습을 더 깊이 파헤치는 것입니다. –