Estoy usando jQuery 1.7.2 y jQuery UI 1.9.1. Estoy usando el siguiente código dentro de un control deslizante. (http://jqueryui.com/slider/)
Tengo una función que debería probar dos valores y, dependiendo de la diferencia entre los dos valores, reformatearlos (al lugar decimal apropiado). Si la diferencia es mayor que 10, analizaré el número entero. Si la diferencia es mayor que 5, debe mantener un decimal. Todo lo demás, me quedaré con dos decimales.
Cuando ingreso dos valores que tienen una diferencia de diez o menos, uso la función toFixed (). Y, en Firebug, veo un error:
TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);
¿Hay algo simple que esté haciendo mal?
Aquí está mi 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
fuente
fuente
Respuestas:
toFixed
no es un método de tipos de variables no numéricas. En otras palabras,Low
yHigh
no se puede arreglar porque cuando obtienes el valor de algo en Javascript, automáticamente se establece en un tipo de cadena. UsarparseFloat()
(oparseInt()
con una base, si es un número entero) le permitirá convertir diferentes tipos de variables en números que permitirán que latoFixed()
función funcione.var Low = parseFloat($SliderValFrom.val()), High = parseFloat($SliderValTo.val());
fuente
$SliderValFrom
es el nombre de variable utilizado por el OP, no una funciónEso es porque
Low
es una cuerda..toFixed()
solo funciona con un número.Trata de hacerlo:
Low = parseFloat(Low).toFixed(..);
fuente
Low
es una cuerda..toFixed()
solo funciona con un número.Una forma sencilla de superar este problema es utilizar la coerción de tipos :
Low = (Low*1).toFixed(..);
La multiplicación por 1 obliga al código a convertir la cadena en un número y no cambia el valor. Código JSFiddle aquí .
fuente
Necesita convertir al tipo de número:
(+Low).toFixed(2)
fuente
En una función, use como
render: function (args) { if (args.value != 0) return (parseFloat(args.value).toFixed(2)); },
fuente