我有以下代码:
$("#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。
答案 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);
}
});