Javascript 为什么我的整数像字符串一样相加

Javascript 为什么我的整数像字符串一样相加,javascript,html,string,integer,Javascript,Html,String,Integer,我试图创建一个程序,在给定特定值时创建椭圆方程。当我尝试添加两个变量时,整数就像字符串一样添加。例如,-4+4应该等于0,但最终等于-44 var vertexY=0 变量vertex2Y=0 函数solveEllipse(){ vertexY=document.getElementById(“ellipseVertexYInput”).value vertex2Y=document.getElementById(“ellipseVertexY2Input”).value centerY=(顶

我试图创建一个程序,在给定特定值时创建椭圆方程。当我尝试添加两个变量时,整数就像字符串一样添加。例如,-4+4应该等于0,但最终等于-44

var vertexY=0
变量vertex2Y=0
函数solveEllipse(){
vertexY=document.getElementById(“ellipseVertexYInput”).value
vertex2Y=document.getElementById(“ellipseVertexY2Input”).value
centerY=(顶点Y+顶点2Y)
控制台日志(centerY)
}

顶点

Y 顶点2
Y
那是因为它们是字符串!
输入
标记的
属性将始终是字符串。如果要将值转换为数字版本,可以使用
var numberValue=Number(stringValue)

这是因为输入值被视为字符串,因此要连接字符串。在进行计算之前,请尝试解析它们

函数solveEllipse(){
var vertexY=parseInt(document.getElementById(“ellipseVertexYInput”).value,10);
var vertex2Y=parseInt(document.getElementById(“ellipseVertexY2Input”)。值,10);
centerY=(顶点Y+顶点2Y)
控制台日志(centerY)
}

顶点

Y 顶点2
Y
因为
document.getElementById(“ellipseVertexYInput”).value
返回一个字符串

您可以使用
+
+vertexY

var vertexY=0
变量vertex2Y=0
函数solveEllipse(){
vertexY=document.getElementById(“ellipseVertexYInput”).value;
vertex2Y=document.getElementById(“ellipseVertexY2Input”).value;
centerY=+vertexY++vertex2Y;
控制台日志(centerY);
}

顶点

Y 顶点2
Y
这里发生的事情是,它将它们组合在一起,就像它是文本一样。要获取数字,必须使用
ParseInt(document.getElementById(“ellipseVertexYInput”).value)

在此,我为您修复了代码

<form method="post" class="forms" id="ellipseVertexDiv">
  Vertex
  <br /> Y
  <input type="text" name="vertexY" class="ellipseVariableInput" id="ellipseVertexYInput">
</form>
<form method="post" class="forms" id="ellipseVertex2Div">
  Vertex 2
  <br/> Y
  <input type="text" name="vertexY2" class="ellipseVariableInput" id="ellipseVertexY2Input">
  <input type="button" name="submitButton" value="Submit" class="forms submitButton" id="ellipseSubmit" onclick="solveEllipse()">
</form>
<script>
  var vertexY = 0
  var vertex2Y = 0

  function solveEllipse() {
    vertexY = ParseInt(document.getElementById("ellipseVertexYInput").value);
    vertex2Y = ParseInt(document.getElementById("ellipseVertexY2Input").value);
    centerY = (vertexY + vertex2Y);
    console.log(centerY);
  }

</script>

顶点

Y 顶点2
Y var vertexY=0 变量vertex2Y=0 函数solveEllipse(){ vertexY=ParseInt(document.getElementById(“ellipseVertexYInput”).value); vertex2Y=ParseInt(document.getElementById(“ellipseVertexY2Input”).value); centerY=(vertexY+vertex2Y); 控制台日志(centerY); }

也可以考虑只通过添加<代码>类型=“数字”>代码>来输入你的输入。

不使用基数(基数),你依赖于正确的自动检测。如果数字有一个前导0(例如030),它将被视为基数8(因此030将返回24(基数10)