Ich verwende jQuery 1.7.2 und jQuery UI 1.9.1. Ich verwende den folgenden Code in einem Schieberegler. (http://jqueryui.com/slider/)
Ich habe eine Funktion, die zwei Werte testen und abhängig von der Differenz zwischen den beiden Werten neu formatieren soll (auf die entsprechende Dezimalstelle). Wenn die Differenz größer als 10 ist, werde ich die ganze Zahl analysieren. Wenn die Differenz größer als 5 ist, sollte eine Dezimalstelle beibehalten werden. Alles andere werde ich zwei Dezimalstellen behalten.
Wenn ich zwei Werte mit einem Unterschied von zehn oder weniger eingebe, verwende ich die Funktion toFixed (). Und in Firebug sehe ich einen Fehler:
TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);
Gibt es etwas Einfaches, das ich falsch mache?
Hier ist mein Code:
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
quelle
quelle
Antworten:
toFixed
ist keine Methode für nicht numerische Variablentypen. Mit anderen Worten,Low
undHigh
kann nicht behoben werden, da beim automatischen Abrufen des Werts von etwas in Javascript automatisch ein Zeichenfolgentyp festgelegt wird. Wenn SieparseFloat()
(oderparseInt()
mit einem Radix, wenn es sich um eine Ganzzahl handelt) verwenden, können Sie verschiedene Variablentypen in Zahlen konvertieren, damit dietoFixed()
Funktion funktioniert.quelle
$SliderValFrom
ist der Variablenname, der vom OP verwendet wird, keine FunktionDas liegt daran, dass
Low
es sich um eine Zeichenfolge handelt..toFixed()
funktioniert nur mit einer Nummer.Versuchen Sie Folgendes:
quelle
Low
ist eine Zeichenfolge..toFixed()
funktioniert nur mit einer Nummer.Ein einfacher Weg, um ein solches Problem zu überwinden, ist die Verwendung von Typenzwang :
Die Multiplikation mit 1 erzwingt Code, um die Zeichenfolge in eine Zahl umzuwandeln, und ändert den Wert nicht. JSFiddle-Code hier .
quelle
Sie müssen in den Zahlentyp konvertieren:
quelle
Verwenden Sie in einer Funktion als
quelle