我刚刚在最简单的代码中发现了一个奇怪的行为,我想知道为什么会这样。
我有3 inputs
(a,b,c)类型number
,每当它们发生变化时,我将jQuery的值存储在一个全局变量中(每个输入一个变量)。然后我调用一个函数来计算3个变量(a + b) / c
的平均值。当我console.log
变量和总数时,它返回((a + 10) + b) /c
。不知何故,它只是向第一个变量添加10,我不明白为什么。
number_a = 0;
number_b = 0;
number_c = 0;
$('#a').bind('input propertychange', function() {
number_a = $(this).val();
calculate();
});
$('#b').bind('input propertychange', function() {
number_b = $(this).val();
calculate();
});
$('#c').bind('input propertychange', function() {
number_c = $(this).val();
calculate();
});
function calculate() {
var total = 0;
if (number_c) {
total = (number_a + number_b) / number_c;
} else {
total = (number_a + number_b) / 1;
}
console.log(number_a, number_b, number_c);
console.log(total);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="a" placeholder="a" />
<input type="number" id="b" placeholder="b" />
<input type="number" id="c" placeholder="c" />
&#13;
我知道我可以使用parseInt()
来解决这个问题,我从输入中获取值,因为它们是字符串,但它很奇怪它只发生在a
输入并且恰好{{1 }} 每次。
你们知道为什么会这样吗?
答案 0 :(得分:-1)
使用parseInt(),否则输入值将被视为字符串。
$('#a').bind('input propertychange', function() {
number_a = parseInt($(this).val());
// call the calculation function
calculate();
});