jQuery .val()串联而不是加法

时间:2019-01-08 10:55:53

标签: jquery

我有以下代码:

$("#negativecustomnicotinevgInput, 
#positivecustomnicotinevgInput").click(function(){
  if($(this).attr("id") == "negativecustomnicotinevgInput"){
      $("#customnicotinepgInput").val($("#customnicotinepgInput").val()+5);
  }
  else if($(this).attr("id") == "positivecustomnicotinevgInput"){
    $("#customnicotinepgInput").val($("#customnicotinepgInput").val()-5);
  }
});

当我单击按钮positivecustomnicotinevgInput时,该值减小5。但是,当单击negativecustomnicotinevgInput时,其实际上是将数字5连接起来,而不是将其加到该值上。

例如,值50通过加5变为505,然后变为5055,而不是预期的55和60。

2 个答案:

答案 0 :(得分:0)

+也用于字符串连接。使用-时,JS会将输入字符串(包含数字)转换为数字。使用+时,不需要js进行此转换。

要解决该问题,您可以在示例中使用parseInt()来强制进行转换:

$("#customnicotinepgInput").val(parseInt($("#customnicotinepgInput").val(), 10) + 5);
//                              ^-------^-------------------------------------^-------Notice this

答案 1 :(得分:0)

更加努力地检查值

$("#negativecustomnicotinevgInput, #positivecustomnicotinevgInput").click(function(){
    let n = Number( $("#customnicotinepgInput").val());
    let id = $(this).attr("id");

    if ( isNaN( n)) n = 0;  // make sure it's a number

    if( id == "negativecustomnicotinevgInput"){
        $("#customnicotinepgInput").val(n+5);
    }
    else if( id == "positivecustomnicotinevgInput"){
        $("#customnicotinepgInput").val(n-5);

    }

});