2010-05-25 2 views
0

메신저 자바 스크립트에 매우 새로 워서이 스크립트를 작성하여 장바구니를 추가하고 소계 및 합계를 인쇄하십시오. FF에서는 작동하지만 IE에서는 작동하지 않습니다. 이 함수는 세 개의 선택 옵션 중 하나 인 onclick에 의해 0-25의 값으로 호출됩니다. 그것은 머리에 js 파일에있다. 그것이하는 일은 선택한 값을 변수로 얻고, parseint하고, 더하거나 곱하고, 표의 innerHTML을 변경하여 부분합과 합계를 반영합니다. FF는 훌륭하지만 IE는 Nan을 제공합니다. 필자는 여러 가지 방법으로 여러 번 다시 써 보았습니다. 많은 번역본이 여전히 FF이지만 IE8에서는 작동하지 않습니다. 필자는 변수와 양식 ID를 반복하지 않도록했습니다. Javascript는 IE, FF로 OK를 반환합니다.

function gen_invoice() { 
    var scount = parseInt(document.shopcart.studentcount.value, 10); 
    var ycount = parseInt(document.shopcart.youthcount.value, 10); 
    var fcount = parseInt(document.shopcart.facultycount.value, 10); 

    //html output source is 3 selects like this, with diff ids and names: 
    //<select name="studentcount" id="studentcount"> 
    //<option onclick="gen_invoice()" value="0">0 </option></select> 
    var cardcost = parseInt(document.shopcart.cardprice.value, 10); 

    //cardcost comes from hidden input value: 
    //<input type="hidden" id="cardprice" name="cardprice" value="25"> 
    var totalsum = scount + ycount + fcount; 

    var grandtotal = totalsum * cardcost; 

    document.getElementById('s_price').innerHTML = scount * cardcost; 
    document.getElementById('y_price').innerHTML = ycount * cardcost; 
    document.getElementById('f_price').innerHTML = fcount * cardcost; 
    document.getElementById('grand').innerHTML = grandtotal; 
    //.... 
} 

...이 후 다른 양식을 작성하기위한 3 개 긴 루프가있다, 그러나 정수로 선택한 값에 따라 달라집니다 때문에 어느 IE에서 일을 해달라고. 이 부분은 먼저 발생하고 Nan을 반환합니다. 그래서 문제는 여기에 있습니다. 나는 이것을 통해 테이블 ​​위에 머리를 치고 말았다. 나머지 사이트 전체를 멋지게 작성하는 것이 얼마나 실망 스러운지 상상해보십시오. 그러나 3 개의 숫자를 함께 추가하는 데 실패하십시오. 도와주세요!

+2

무슨 문입니까? console.log()를 사용하거나 중간 값이 무엇인지 알리기 위해 심지어 시도하십시오 –

답변

1

당신은

  • document.getElementById("foo")
  • document.forms.shopcart.elements.cardprice

이 두 당신이 지금하고있는 것보다 더 나은 방법입니다 사용하여 양식 요소를 액세스와 더 나은 운이있을 수 있습니다.

0

innerHTML은 숫자가 아닌 문자열 개체를 필요로합니다. 숫자 표현 뒤에 ''(공백)을 추가하십시오. 같은

: 그것은`NaN`을 반환 ....innerHTML = (count * cardcost) + "";

+0

이 경우에도 'NaN'을 생성하지 않습니다. 숫자는 예상 할 때마다 문자열로 강제 변환됩니다. 'alert ((4) .toString()) '을 시도하십시오. –

+0

innerHTML의 객체는 실제로 문자열이 아닙니다. HTMLElement 객체입니다. 따라서 숫자가 어떻게 변환되는지는 호환성 문제와 관련이 있습니다. – Thevs

관련 문제