我正在使用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);
Run Code Online (Sandbox Code Playgroud)
有什么简单的我做错了吗?
这是我的代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
jer*_*emy 147
toFixed不是非数字变量类型的方法.换句话说,Low并且High无法修复,因为当您在Javascript中获取某些内容的值时,它会自动设置为字符串类型.使用parseFloat()(或parseInt()使用基数,如果它是一个整数)将允许您将不同的变量类型转换为数字,这将使toFixed()函数工作.
var Low = parseFloat($SliderValFrom.val()),
High = parseFloat($SliderValTo.val());
Run Code Online (Sandbox Code Playgroud)
Nea*_*eal 81
那是因为Low是一个字符串.
.toFixed() 仅适用于数字.
尝试做:
Low = parseFloat(Low).toFixed(..);
Run Code Online (Sandbox Code Playgroud)
Joã*_*ira 21
Low 是一个字符串.
.toFixed() 仅适用于数字.
克服此类问题的一种简单方法是:
Low = (Low*1).toFixed(..);
Run Code Online (Sandbox Code Playgroud)
乘以1强制代码将字符串转换为数字并且不会更改值.JSFiddle代码在这里.
| 归档时间: |
|
| 查看次数: |
132868 次 |
| 最近记录: |