1

我是 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 时,它就可以工作了。其他值不起作用。

其他测试值是:

  1. a=751, b=750 并且结果=true
  2. a=0751, b=750 并且结果=假
  3. a=551, b=750 和结果=假
  4. a=1051, b=750 并且结果=假
  5. a=7500, b=750 并且结果=真
  6. a=6000, b=600 并且结果=真

我还检查了控制台,例如:console.log(a + b);

控制台窗口的结果类似于 1000750(当值类似于 a=1000 & b=750)或 0752750(当值类似于 a=0752 & b=750 时)。

谢谢。

4

4 回答 4

3

您应该在比较之前将字符串转换为数字(使用时它们会变成字符串.val())。使用parseIntparseFloat

function greater_than(a, b, msg_div){
    a = parseInt(a, 10);
    b = parseInt(b, 10);
    // etc
于 2012-09-18T14:05:10.963 回答
0

您正在比较字符串并且"1000">"99"是错误的。

解决方案是首先使用parseIntparseFloat解析您的数字:

 var pur_rate = parseFloat($('#pur_rate input').val());

或者

 var pur_rate = parseInt($('#pur_rate input').val(), 10);
于 2012-09-18T14:04:12.760 回答
0

读取输入值返回字符串。因此,如果您将字符串与字符串进行比较,则它是 ASCII 比较,而不是数字比较。请使用parseInt(value, 10);永远不要忘记基数!;)

于 2012-09-18T14:07:53.793 回答
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()assingning 代替.html('')

还有一些文档:

于 2012-09-18T14:25:43.570 回答