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

其他测试值包括:


a = 751,b = 750,结果= true
a = 0751,b = 750,结果= false
a = 551,b = 750,结果= false
a = 1051,b = 750,结果= false
a = 7500,b = 750,结果= true
a = 6000,b = 600,结果= true


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

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

谢谢。

最佳答案

这是一个更强大的解决方案(您正在做的是字符串比较而不是数字比较)。

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('')

和一些文档:


Number
parseFloat
parseInt
isNaN

08-07 23:48