添加变量整数但输出为字符串 - JavaScript

时间:2018-06-01 12:54:36

标签: javascript

我在将变量添加到一起时遇到了一个小问题,我设置了一个输入数字字段来设置变量。然后我所做的就是发布3个数字,第一个是原始数据,第二个是第一个加上原始数据,然后第三个是第二个加上原始数字。但由于某种原因(显然我错过了一些东西),因为我的变量输出为字符串而不是整数?



function submit() {
  var input = document.getElementById("input").value;
  var p1 = parseInt(input);
  var p2 = parseInt(p1) + input;
  var p3 = parseInt(p2) + input;
  document.getElementById("p1").innerHTML = p1;
  document.getElementById("p2").innerHTML = p2;
  document.getElementById("p3").innerHTML = p3;
}

<label for="input">Value</label><br>
<input type="number" id="input"><br>
<button id="btnSubmit" onclick="submit()">Submit</button>
<p id="p1">0</p>
<p id="p2">0</p>
<p id="p3">0</p>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:1)

document.getElementById(“input”)。value返回一个字符串值,需要将其转换为整数类型。在parseInt变量声明上使用input,而不是在其他任何位置进行。

  var input = parseInt(document.getElementById("input").value);

function submit() {
  var input = parseInt(document.getElementById("input").value, 10);
  var p1 = input;
  var p2 = p1 + input;
  var p3 = p2 + input;
  document.getElementById("p1").innerHTML = p1;
  document.getElementById("p2").innerHTML = p2;
  document.getElementById("p3").innerHTML = p3;
}
<label for="input">Value</label><br>
<input type="number" id="input"><br>
<button id="btnSubmit" onclick="submit()">Submit</button>
<p id="p1">0</p>
<p id="p2">0</p>
<p id="p3">0</p>

答案 1 :(得分:0)

确保您始终如一地使用数字进行算术运算:

&#13;
&#13;
function submit() {
    var input = document.getElementById("input").value;
    var p1 = parseInt(input);
    var p2 = 2*p1;
    var p3 = p2 + p1;
    document.getElementById("p1").innerHTML = p1;
    document.getElementById("p2").innerHTML = p2;
    document.getElementById("p3").innerHTML = p3;
}
&#13;
<label for="input">Value</label><br>
<input type="number" id="input"><br>
<button id="btnSubmit" onclick="submit()">Submit</button>
<p id="p1">0</p>
<p id="p2">0</p>
<p id="p3">0</p>
&#13;
&#13;
&#13;

这只是JavaScript将表达式解释为字符串连接与算术的问题,后者是您要实现的目标。

答案 2 :(得分:0)

您正在进行字符串连接。使用parseInt()获取input

的整数表示形式

&#13;
&#13;
    function submit() {
      var input = document.getElementById("input").value;
      var p1 = parseInt(input);
      var p2 = parseInt(p1) + parseInt(input);
      var p3 = parseInt(p2) + parseInt(input);
      document.getElementById("p1").innerHTML = p1;
      document.getElementById("p2").innerHTML = p2;
      document.getElementById("p3").innerHTML = p3;
    }  
&#13;
	<label for="input">Value</label><br>
    <input type="number" id="input"><br>
    <button id="btnSubmit" onclick="submit()">Submit</button>
    <p id="p1">0</p>
    <p id="p2">0</p>
    <p id="p3">0</p>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

input是一个字符串,这就是您使用parseInt(input)将其强制转换为整数的原因。

var p2 = parseInt(p1) + input;行的输入为"42"输入,如下所示:var p2 = parseInt(parseInt("42")) + "42";,这意味着您连接一个字符串而不是添加两个整数。< / p>

您可以使用var p2 = p1 + parseInt(input);var p2 = p1 * 2;var p3 = p1 * 3,这可能是一个更简单的解决方案。

答案 4 :(得分:0)

在javascript D0 CF 11 E0 A1 B1 1A E1 中,你在做什么

'1' + 1 = 11

你应该解析输入而不是p1

这里是更新的代码段

p1 = parseInt(1) //input = 1

p2 = 1 + '1' // p1 = 1, input = '1' 
output = '11'

p3 = 1 + '11' // p2 = 1, input = '1'
output = '111'
function submit() {
  var input = parseInt(document.getElementById("input").value);
  var p1 = input;
  var p2 = p1 + input;
  var p3 = p2 + input;
  document.getElementById("p1").innerHTML = p1;
  document.getElementById("p2").innerHTML = p2;
  document.getElementById("p3").innerHTML = p3;
}