请看下面的代码。它应该从输入中添加和减去0.1。但是当我点击+按钮时,它会在toFixed(2)函数上出错。为什么这不起作用,当 - 按钮呢?
以下是jsfiddle中的代码。
HTML:
<div class="input-group">
<span class="input-group-btn">
<button type="button" class="iLiter-left-minus btn btn-lg btn-info btn-number" data-type="minus" data-field="">-
</button>
</span>
<input type="number" id="iLiter" class="form-control input-number input-lg" value="0.4" min="0.1" max="10">
<span class="input-group-btn">
<button type="button" class="iLiter-right-plus btn btn-lg btn-info btn-number" data-type="plus" data-field="">
+
</button>
</span>
</div>
JavaScript的:
$('.iLiter-right-plus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
quantity = quantity.toFixed(2);
if (quantity < 10.0) {
quantity = quantity + 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
$('.iLiter-left-minus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
quantity = quantity.toFixed(2);
if (quantity > 0.1) {
quantity = quantity - 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
答案 0 :(得分:1)
尝试
bwplot(yield ~ variety, data = barley, box.width = 1 / ngroups,
groups = year, scales = (x = list(rot = 45)),
par.settings = list(superpose.polygon = list(col = c("green", "red"),
pch =c (15, 15)),
superpose.symbol = list(fill = c("green", "red"))),
auto.key = list(points = FALSE, rectangles = TRUE, space = "right"),
panel.groups = function(x, y, ..., group.number) {
panel.bwplot(x + (group.number - 1.5) / ngroups, y, ...)
},
panel = function(...) {
panel.grid(h = -1, v = 0)
panel.superpose(...)
}
)
和
quantity = +quantity + 0.1;
在代码中的相应位置。它不适用于“+”按钮,因为“+”也表示字符串连接,quantity = +quantity - 0.1; //(here + is optional)
的结果是字符串"string" + number
,字符串没有“toFixed”方法(因为它反映了在控制台错误消息中)而“ - ”运算符将字符串"stringnumber"
转换为数字,一切都按预期工作。
答案 1 :(得分:1)
试试
quantity = Number(quantity) + 0.1;
答案 2 :(得分:1)
您正在将浮点数(您刚刚用parseFloat()
解析)转换回toFixed(2)
的字符串。对于+
运算符,您传递的内容类似0.50.1
,这不是有效的数字字符串(因此调用'0.50.1'.toFixed(2)
时出错)。
在更新HTML值之前调用.toFixed
一次(不是在使用值之前):
$('.iLiter-right-plus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
if (quantity < 10.0) {
quantity = quantity + 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
$('.iLiter-left-minus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
if (quantity > 0.1) {
quantity = quantity - 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
此处更新了小提琴:https://jsfiddle.net/2fq6bhxs/2/
答案 3 :(得分:1)
请将您的Javascript来源更改为
$('.iLiter-right-plus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
quantity = parseFloat(quantity.toFixed(2));
if (quantity < 10.0) {
quantity = quantity + 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
$('.iLiter-left-minus').click(function (e) {
e.preventDefault();
var quantity = parseFloat($('#iLiter').val());
quantity = parseFloat(quantity.toFixed(2));
if (quantity > 0.1) {
quantity = quantity - 0.1;
quantity = quantity.toFixed(2);
$('#iLiter').val(quantity);
}
});
使用.toFixed
=&gt;时你的quantity
将是一个字符串。
因此,下一个.toFixed
将不起作用,因为.toFixed
仅适用于数字