var num1 = $("input[id='weight']").val(),
num2 = $("input[id='height']").val(),
result = num1/(num2*num2);
$("#submit").click(function() {
$(".result").text(result);
});
它只是显示结果应该是NaN
。为什么?与jQuery做数学运算
var num1 = $("input[id='weight']").val(),
num2 = $("input[id='height']").val(),
result = num1/(num2*num2);
$("#submit").click(function() {
$(".result").text(result);
});
它只是显示结果应该是NaN
。为什么?与jQuery做数学运算
$(function(){
$("#submit").click(function() {
var num1 = $("#weight").val(),
num2 = $("#height").val(),
result = num1/(num2 * num2);
$(".result").text(result);
});
});
一点解释:
问题不是parseInt函数在这里。恕我直言,问题是,在数学的时刻两个瓦尔是空的,或者不是一个数字......
将它们转换为整数(假设你使用的整数):
var num1 = parseInt($("#weight").val(), 10),
num2 = parseInt($("#height").val(), 10),
result = num1/(num2*num2);
注意:选择器'#weight'与'input [id ='weight' ]'。甚至没有'输入#权重'也完全一样。 – Guffa 2012-08-09 12:42:43
试试这个
var num1 = parseInt($("input[id='weight']").val());
num2 = parseInt($("input[id='height']").val());
result = num1/(num2*num2);
$("#submit").click(function() {
$(".result").text(result);
});
我会建议总是指定基数 – 2012-08-09 12:53:00
你应该得到的点击事件里面的值,而不是在页面加载时:
$("#submit").click(function() {
var num1 = $("input[id='weight']").val(),
num2 = $("input[id='height']").val(),
result = num1/(num2*num2);
$(".result").text(result);
});
还有,为什么你会NaN
的结果一些其他的原因:
高度场计算结果为零。 (虽然通常会给出结果Infinity
而不是NaN
。)
某些字段包含某些不能转换为数字的内容。
您在代码中使用了错误的名称,所以实际上并没有从字段中获取值。
您正在使用具有错误小数点分隔符的浮点数,例如,当浏览器期望0,5
时,反之亦然。
一些注意事项:
它使用parseInt
或parseFloat
(这曾经是合适的)做计算之前解析字符串很好的做法。
考虑如果使用像input#weight
这样的选择器或只是#weight
可以工作。如果在页面中有多个具有相同ID的元素,则只需使用input[id='weight']
之类的选择器即可,不建议这样做。
+1,我知道这是如此的耻辱,但我现在发现,0生产NaN! =) – 2012-08-09 13:07:48
注:选择器'#weight'与'input [id ='weight']'不同。甚至没有'输入#权重'也完全一样。 – Guffa 2012-08-09 12:42:08
,我们赢了!非常感谢大家! – 2012-08-09 12:44:23
@Guffa:我的假设是每个页面应该是唯一的每个页面? – 2012-08-09 12:44:57