Estou usando o jQuery 1.7.2 e o jQuery UI 1.9.1. Estou usando o código abaixo em um controle deslizante. (http://jqueryui.com/slider/)
Eu tenho uma função que deveria testar dois valores e dependendo da diferença entre os dois valores reformatá-los (para a casa decimal apropriada). Se a diferença for maior que 10, analisarei o inteiro. Se a diferença for maior que 5, deve-se manter uma casa decimal. De resto, vou manter duas casas decimais.
Quando insiro dois valores com uma diferença de dez ou menos, uso a função toFixed (). E, no Firebug, vejo um erro:
TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);
Existe algo simples que estou fazendo de errado?
Aqui está o meu código:
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);
}
}
javascript
Evik James
fonte
fonte
Respostas:
toFixed
não é um método de tipos de variáveis não numéricas. Em outras palavras,Low
eHigh
não pode ser corrigido porque quando você obtém o valor de algo em Javascript, ele é automaticamente definido como um tipo de string. UsarparseFloat()
(ouparseInt()
com uma raiz, se for um inteiro) permitirá que você converta diferentes tipos de variáveis em números, o que permitirá que atoFixed()
função funcione.fonte
$SliderValFrom
é o nome da variável usado pelo OP, não uma funçãoIsso porque
Low
é uma string..toFixed()
só funciona com um número.Experimente fazer:
fonte
Low
é uma string..toFixed()
só funciona com um número.Uma maneira simples de superar esse problema é usar a coerção de tipo :
A multiplicação por 1 força o código a converter a string em número e não altera o valor. Código JSFiddle aqui .
fonte
Você precisa converter para o tipo de número:
fonte
Em uma função, use como
fonte