[javascript] Firebug가 toFixed ()가 함수가 아니라고 말하는 이유는 무엇입니까?

jQuery 1.7.2 및 jQuery UI 1.9.1을 사용하고 있습니다. 슬라이더 내에서 아래 코드를 사용하고 있습니다. (http://jqueryui.com/slider/)

두 값을 테스트하고 두 값의 차이에 따라 적절한 소수점 자리로 다시 형식화하는 함수가 있습니다. 차이가 10보다 크면 정수를 구문 분석합니다. 차이가 5보다 크면 소수점 하나를 유지해야합니다. 그 밖의 모든 것은 소수점 두 자리를 유지합니다.

차이가 10 이하인 두 값을 입력 할 때 toFixed () 함수를 사용합니다. 그리고 Firebug에서 오류가 표시됩니다.

TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);

내가 잘못하고있는 간단한 것이 있습니까?

내 코드는 다음과 같습니다.

var Low = $SliderValFrom.val(),
High = $SliderValTo.val();

// THE NUMBER IS VALID
if (isNaN(Low) == false && isNaN(High) == false) {
    Diff = High - Low;
if (Diff > 10) {
      Low = parseInt(Low);
  High = parseInt(High);
} else if (Diff > 5) {
       Low = Low.toFixed(1);
       High = High.toFixed(1);
} else {
       Low = Low.toFixed(2);
   High = High.toFixed(2);
}
}



답변

toFixed숫자가 아닌 변수 유형의 방법이 아닙니다. 즉, Low그리고 High당신이 자바 스크립트에서 뭔가의 가치를 얻을 때, 그것은 자동으로 문자열 유형으로 설정되어 있기 때문에 고정 할 수 없습니다. 사용 parseFloat()(또는 parseInt()정수인 경우 기수 사용 )을 사용하면 다양한 변수 유형을 숫자로 변환하여 toFixed()함수가 작동 할 수 있습니다.

var Low  = parseFloat($SliderValFrom.val()),
    High = parseFloat($SliderValTo.val());


답변

그것은 Low문자열 이기 때문 입니다.

.toFixed() 숫자로만 작동합니다.


시도해보십시오.

Low = parseFloat(Low).toFixed(..);


답변

Low 문자열입니다.

.toFixed() 숫자로만 작동합니다.

이러한 문제를 극복하는 간단한 방법은 유형 강제 를 사용하는 것입니다 .

Low = (Low*1).toFixed(..);

1을 곱하면 코드가 문자열을 숫자로 변환하고 값을 변경하지 않습니다. 여기에 JSFiddle 코드가 있습니다 .


답변

숫자 유형으로 변환해야합니다.

(+Low).toFixed(2)


답변

함수에서 다음과 같이 사용하십시오.

render: function (args) {
    if (args.value != 0)
        return (parseFloat(args.value).toFixed(2));


},


답변