这是html:
<body>
<p>
<img src="http://i.imgur.com/yOadS1c.png" id="minus1" width="20" height="20" class="minus"/>
<input id="qty1" type="text" value="1" class="qty"/>
<img id="add1" src="http://i.imgur.com/98cvZnj.png" width="20" height="20" class="add"/>
</p>
</body>
这是js:
$(function () {
$('.add').on('click',function(){
var $qty=$(this).closest('p').find('.qty');
var currentVal = parseFloat($qty.val());
if (!isNaN(currentVal)) {
$qty.val(currentVal + 0.1);
}
});
$('.minus').on('click',function(){
var $qty=$(this).closest('p').find('.qty');
var currentVal = parseFloat($qty.val());
if (!isNaN(currentVal) && currentVal > 0) {
$qty.val(currentVal - 0.1);
}
});
});
jsfiddle:http://jsfiddle.net/hMS6Y/30/
当我尝试将输入值增加或减少0.1时,我会得到一些奇怪的值,如:
1.1没关系 1.2000000000000002 1.3000000000000003
我怎样才能看出它们:1.1,1.2,1.3等等。
答案 0 :(得分:3)
您可以使用 - .toFixed(1)
将其四舍五入到您想要的小数位:
在这里:Fiddle
$(function () {
$('.add').on('click',function(){
var qty = $(this).closest('p').find('.qty');
var currentVal = parseFloat($(qty).val());
if (!isNaN(currentVal)) {
$(qty).val((currentVal + 0.1).toFixed(1));
}
});
$('.minus').on('click',function(){
var qty=$(this).closest('p').find('.qty');
var currentVal = parseFloat($(qty).val());
if (!isNaN(currentVal) && currentVal > 0) {
$(qty).val((currentVal - 0.1).toFixed(1));
}
});
});
答案 1 :(得分:2)
尝试使用像这样的
$(function () {
$('.add').on('click',function(){
var $qty=$(this).closest('p').find('.qty');
var currentVal = parseFloat($qty.val());
if (!isNaN(currentVal)) {
$qty.val(parseFloat(currentVal + 0.1).toFixed(1));
}
});
$('.minus').on('click',function(){
var $qty=$(this).closest('p').find('.qty');
var currentVal = parseFloat($qty.val());
if (!isNaN(currentVal) && currentVal > 0) {
$qty.val(parseFloat(currentVal - 0.1).toFixed(1));
}
});
});
答案 2 :(得分:1)
一个可接受的解决方法是将表达式转换为整数数学,然后转换回来,即
//添加案例
$qty.val((currentVal*10 + 1)/10);
//减去大小写
$qty.val((currentVal*10 - 1)/10);
答案 3 :(得分:0)
在Javascript中常见的是有意想不到的行为,但这个行为特别恶毒。
10000000000000000 === 10000000000000001
Javascript没有整数类型,但让你认为它有。 parseInt和parseFloat内置函数,“1”显示为“1”而非“1.0”(与许多语言一样)的事实导致一般误解。
<小时/> 您可以使用 Javascript-bignum。