向parseInt对象添加值无效

时间:2018-07-09 18:17:10

标签: javascript jquery

这是我的JavaScript:

CompletableFuture::get

我的输出是: enter image description here

如底部文本框中所示,最后一个数字“ -31”应为“ -4”(3 + 1)。而当前它是作为字符串添加的。不过,我似乎无法找出问题所在。

顶部的文本框是$('#vendorid').change(function(){ var vendno = $(this).val(); var data_String; var numpo = parseInt($('#numvendpo').val()); data_String = 'vendorid='+vendno; $.post('ft-vendno.php',data_String,function(data){ var data = jQuery.parseJSON(data); $('#vendponum').val($('#vendponum').val() + data +'-'+ numpo+1); }); }); ,底部的文本框是#numvendpo,请原谅我令人困惑的变量名。

1 个答案:

答案 0 :(得分:0)

当您这样做:

some_string + numpo + 1

由于第一个值是string,因此您要从右到左连接值,因此您首先需要将numpo(将其转换为string)连接到some_string ,然后是1,也可以是string

您可以通过确保operations are done in the right order来解决此问题,因此一种选择可能是在numpo + 1周围加上括号:

$('#vendponum').val($('#vendponum').val() + data + '-' + (numpo + 1));

您也可以在之前进行求和:

var numpo = parseInt($('#numvendpo').val()) + 1;

或使用template strings

$('#vendponum').val(`${ $('#vendponum').val() }${ data }-${ numpo + 1 }`);

在这里您可以看到哪些有效,哪些无效:

const $vendorid = $('#vendorid');
const $numvendpo = $('#numvendpo');
const $outputParenthesis = $('#outputParenthesis');
const $outputBefore = $('#outputBefore');
const $outputTemplate = $('#outputTemplate');
const $outputWrong = $('#outputWrong');

$('#vendorid, #numvendpo').on('input', () => {
  const vendno = $vendorid.val();
  
  const numpo = parseInt($numvendpo.val());
  
  if (isNaN(numpo)) {
    return;
  }
  
  const numpoPlusOne = numpo + 1;

  $outputParenthesis.text(vendno + '-' + (numpo + 1));
  $outputBefore.text(vendno + '-' + numpoPlusOne);
  $outputTemplate.text(`${ vendno }-${ numpo + 1 }`);
  $outputWrong.text(vendno + '-' + numpo + 1);
});
body,
input {
  font-family: monospace;
  
}

input {
  border: 3px solid black;
  padding: 8px;
  width: 200px;
}

p {
  margin: 8px 0;
}

.label {
  display: inline-block;
  width: 222px;
  text-align: right;
  margin-right: 8px;
}

.wrong {
  color: red;
}
<input placeholder="Vendor ID" id="vendorid" type="text" />
<input placeholder="Num Vendor PO" id="numvendpo" type="text" />

<p><span class="label">WITH PARENTHESIS: </span><span id="outputParenthesis"></span></p>
<p><span class="label">SUM BEFORE: </span><span id="outputBefore"></span></p>
<p><span class="label">TEMPLATE LITERAL: </span><span id="outputTemplate"></span></p>
<p class="wrong"><span class="label">WRONG: </span><span id="outputWrong"></span></p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>