我是JavaScript的新手,但如果有人能告诉我我错过了什么,我将不胜感激。
基本上,我正在尝试从两个输入中测试大值。以下是我到目前为止所做的事情:
$('#than_stock_submit').click(function() {
var pur_rate = $('#pur_rate input').val(),
sell_rate = $('#sell_rate input').val(),
msg_div = $('#sell_rate .msg');
if(greater_than(sell_rate, pur_rate, msg_div)==false){return false}
});
function greater_than(a, b, msg_div){
msg_div.show().html( '' );
if(a > b){
msg_div.show().html( '<p class="success">Sell Rate is good</p>' );
return true;
} else {
msg_div.show().html( '<p class="error">Sell Rate should be increased</p>' );
return false;
}
}
我已经检查了几个值。当我使用小于1000的值进行测试时,类似于b = 500和a = 5000或b = 100和a = 1000这两个值,则其工作。其他值无效。
其他测试值为:
我还使用控制台检查:console.log(a + b);
控制台窗口的结果类似于1000750(当值类似于a = 1000&amp; b = 750)或0752750(当值类似于a = 0752&amp; b = 750时)。
感谢。
答案 0 :(得分:3)
您应该在比较之前将字符串转换为数字(使用.val()
时它们将成为字符串)。使用parseInt
或parseFloat
:
function greater_than(a, b, msg_div){
a = parseInt(a, 10);
b = parseInt(b, 10);
// etc
答案 1 :(得分:0)
您正在比较字符串,而"1000">"99"
是错误的。
解决方案是首先使用parseInt或parseFloat解析您的号码:
var pur_rate = parseFloat($('#pur_rate input').val());
或
var pur_rate = parseInt($('#pur_rate input').val(), 10);
答案 2 :(得分:0)
读取输入值会返回字符串。因此,如果将字符串与字符串进行比较,则它是ASCII比较,而不是数字比较。请使用parseInt(value, 10);
永远不要忘记基数! ;)
答案 3 :(得分:0)
这是一个更强大的解决方案(您正在做的是字符串比较,而不是数字比较)。
function greater_than(a,b) {
// first, convert both passed values to numbers
// (or at least try)
var nA = new Number(a),
nB = new Number(b);
// check if they were converted successfully.
// isNaN = is Not a Number (invalid input)
if (!isNan(nA) && !isNaN(nB)) {
// now go ahead and perform the check
msg_div.empty().show();
if (nA > nB) {
$('<p>',{'class':'success'})
.text('Sell Rate is good')
.appendTo(msg_div);
return true;
} else {
$('<p>',{'class':'error'})
.text('Sell Rate should be increased')
.appendTo(msg_div);
}
}
// In case you wanted to handle showing an error for
// invalid input, you can uncomment the following lines
// and take the necessary action(s)
else{
/* one of them was not a number */
}
return false;
}
请注意,我使用jQuery构建您添加的<p>
。我还使用了.empty()
而不是.html('')
。
还有一些文档: