2012-10-16 4 views
0
function totalPrice() 
     { 
     var totalItems = document.getElementsByName("price").length; 
     var total = 0; 
     var rgx = /[^0-9]\x2e$/g; 
     var price; 
     var string_in = document.getElementsByName("price"); 

     for (var x=0; x<totalItems-1; x++){ 

      price = new Number(rgx.exec(string_in[x].text)); 
      parseFloat(total) = parseFloat(total) + parseFloat(price); //This is where the error occurs 
     } 
     document.getElementById("total").innerHTML = ' $' + total; 
     } 

이것은 스크립트가 실행하는 내 기능입니다. '카트'에 x 개의 항목이 있습니다. 이 함수는 Javascript로만 작성해야합니다. 아니요. 명명 된 요소는 $ 123.45 (또는 더 많은 자릿수) 형태로 가격이 포함되어 있습니다.잡히지 않은 ReferenceError : 과제 '카트'총 계산에서 왼쪽이 유효하지 않습니다.

답변

4

Erm ... 왼쪽에서 parseFloat()을 제거하면됩니다.

사이드 노트 : 특히 돈과 관련하여 항상 정수로 작업하십시오. 이 경우 코드 측에서 센트로 가격을 책정하십시오. 결과를 달러로 표시하려면 맨 끝에 100으로 나눕니다 (또는 문자열 함수를 통해 소수점을 삽입하는 것만 가능). 이렇게하면 부동 소수점 부정확성을 피할 수 있습니다.

+0

좋습니다. 이제 나는 내가 기대하지 않았던 숫자를 얻는다. 나는 코드에 뭔가 다른 것이 있다고 생각한다. 나는 정규 표현식으로 무엇을 하는지를 알지도 못하고 가격에서 $를 제거하고 문자열을 숫자로 읽은 다음 누적 합계에 추가하려고했습니다. 내가 그렇게 가까이 있니? –

+0

아마도 당신의 이상한 정규식 때문일 것입니다. 보통 사람들처럼'substr'을 사용할 수 없습니까? 일반인처럼 '새 번호'대신 숫자 리터럴을 사용할 수 없습니까? –

+0

정상적인 사람들부터 시작해서 바꾸자. 나는 네가 학생이라는 것을 알고 있지만, 나는 이것을 쓰는 방법이다. 초보자/바보 태그를 허용하면 이해할 수 있도록 도와 주면 어떨까요? 어쨌든 원래 substr을 사용하는 것을 생각했지만 그 주위를 감쌀 수있었습니다. 아이디어를 가져 주셔서 감사합니다. –

관련 문제