2010-08-17 3 views
0

이상한 점이 있으시면 아래를 참조하십시오. 경고 1이 0을 출력하지만 경고 2가 정확한 합을 출력하는 이유는 무엇입니까? 그들은 ... 같은 일에 설정되어var를 두 개의 텍스트 상자 값 합계로 설정하면 0이됩니다.

var sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 
//tb1.val() == 3, tb2.val() == 5;  

1) alert(sumTotal); //Outputs 0; 
2) alert(parseFloat($('#tb1').val()) + parseFloat($('#tb2').val())); //Outputs 8; 

정확한 코드 : +1이 여전히 범위 지정 문제가 될 수 있습니다

$(document).ready(function() { 
     var koh = 1; 
     var sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 
     window.setInterval(function() { 
      // correct value 
      tb3.val(parseFloat($('#tb1').val()) + parseFloat($('#tb2').val())); 
      tb3.val(parseFloat(sumTotal)); // 0 
      tb3.val(sumTotal); // 0 
      tb3.val(koh++) //increments +1 
     }, 2500); 
    }) 

코 증가하기 때문에?

+1

'sumTotal'은 두 번째 경고 표현식의 실행 시간과 반대되는 다른 시간에 정의됩니까? –

+1

경고에 도달했을 때 sumTotal이 범위 내에 있는지 확인 하시겠습니까? – Fosco

+0

Firefox에서 테스트 한 결과 # 1과 # 2 모두에 대해 경고가 발생했습니다. – Adam

답변

1

이 변경합니다. 기본값이 0이면 결과는 0이되며 텍스트 상자의 값이 변경 되더라도 변경되지 않습니다.

기본값 인 경우 sumTotal은 NaN이며 변경되지 않습니다.

+0

하하. 신기한 실수 야. 많은 감사. – 4imble

0

parseFloat에 대한 호출을 제거하려고 때문에이 라인

tb3.val(parseFloat(sumTotal)); 

sumTotal 이미 플로트, 사실

tb3.val(sumTotal); 

된다 (당신이 합산 전에 변환 한) :

var sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 

float 값에 parseFloat을 사용하면 probab 정의되지 않은 행동으로 이어질 수 있습니다.


내가 발견 한 것 같습니다. 텍스트 상자의 값은 html로 미리 채워 졌습니까?

글 상자가 비어 있거나이 시점에서 0이 포함 된 경우

var sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 
각각 (이 지적 차오 덕분에) NaN이 0이 될 것이다 sumTotal에 저장된 값과 다음에서 변경되지 않습니다

에 : tb3.val(sumTotal); 문은 sumTotal을 다시 평가하지 않는다는 것을 기억하십시오.

당신이 뭔가해야합니다 사용자 입력에 합 업데이트하고 싶다면 : sumTotal 텍스트 상자의 값 전에 계산

$(document).ready(function() { 
    var sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 
    $('#tb1').add('#tb2').keyup(function() { 
     sumTotal = parseFloat($('#tb1').val()) + parseFloat($('#tb2').val()); 
     tb3.val(sumTotal); 
    }); 
}) 
+0

opps. 예, 나는 그것을 가지고 있었는지, 그것이 도움이되는지보기 위해 그것을 추가하려고 노력했다. 그것은 아무런 차이가 없었습니다. – 4imble

+0

빈 문자열은 float로 구문 분석 될 때 NaN이됩니다. – cHao

+0

cHao, 우리에게는 같은 생각이 있었던 것 같습니다. 그건 그렇고, 이것을 지적 해 주셔서 감사합니다. 물론 – Utaal

관련 문제