Saya menggunakan jQuery 1.7.2 dan jQuery UI 1.9.1. Saya menggunakan kode di bawah ini dalam slider. (http://jqueryui.com/slider/)
Saya memiliki fungsi yang harus menguji dua nilai dan tergantung pada perbedaan antara dua nilai memformatnya (ke tempat desimal yang sesuai). Jika perbedaannya lebih besar dari 10, saya akan mengurai bilangan bulat. Jika perbedaannya lebih besar dari 5, itu harus menyimpan satu desimal. Yang lainnya, saya akan menyimpan dua desimal.
Ketika saya memasukkan dua nilai yang memiliki perbedaan yaitu sepuluh atau kurang, saya menggunakan fungsi toFixed (). Dan, di Firebug, saya melihat kesalahan:
TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);
Apakah ada sesuatu yang sederhana yang saya lakukan salah?
Ini kode saya:
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
sumber
sumber
Jawaban:
toFixed
bukan metode jenis variabel non-numerik. Dengan kata lain,Low
danHigh
tidak bisa diperbaiki karena ketika Anda mendapatkan nilai dari sesuatu di Javascript, secara otomatis diatur ke tipe string. MenggunakanparseFloat()
(atauparseInt()
dengan radix, jika itu bilangan bulat) akan memungkinkan Anda untuk mengonversi jenis variabel yang berbeda menjadi angka yang akan memungkinkantoFixed()
fungsi untuk bekerja.var Low = parseFloat($SliderValFrom.val()), High = parseFloat($SliderValTo.val());
sumber
$SliderValFrom
adalah nama variabel yang digunakan oleh OP, bukan fungsiItu karena
Low
adalah sebuah string..toFixed()
hanya bekerja dengan angka.Coba lakukan:
Low = parseFloat(Low).toFixed(..);
sumber
Low
adalah sebuah string..toFixed()
hanya bekerja dengan angka.Cara sederhana untuk mengatasi masalah tersebut adalah dengan menggunakan paksaan tipe :
Low = (Low*1).toFixed(..);
Perkalian dengan 1 memaksa kode untuk mengubah string menjadi angka dan tidak mengubah nilainya. Kode JSFiddle di sini .
sumber
Anda perlu mengonversi ke jenis nomor:
(+Low).toFixed(2)
sumber
Dalam suatu fungsi, gunakan sebagai
render: function (args) { if (args.value != 0) return (parseFloat(args.value).toFixed(2)); },
sumber