3 回答
TA贡献1876条经验 获得超6个赞
您需要在将两个值相加之前将它们转换为数字,这样您将得到加法而不是串联。
document.getElementById("Sum").innerHTML = +document.getElementById('n1').value + +document.getElementById('n2').value ;
TA贡献1809条经验 获得超8个赞
您需要使用 parseInt 指令将输入值转换为 int 数据类型。这是代码:
<script>
function pr() {
var foobar = 100;
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value ; works -->
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value ; works -->
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar ; -->
<!-- concatenates as strings: why? -->
document.getElementById("Sum").innerHTML = parseInt(document.getElementById('n1').value) +parseInt(document.getElementById('n2').value) ;
}
</script>
TA贡献1869条经验 获得超4个赞
你+在那里使用两种不同类型的 s 。前两个:
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value ; works -->
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value ; works -->
执行的操作是leftSide = +expression
这是一元加运算符,它将非数字强制转换为数字。
在第三个中:
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar ; -->
执行的操作是leftSide = +expression1 + expression2
使用一元加expression1将其转换为数字。但and+之间不是一元加法,而是加法/串联。当在两个表达式之间使用时,如果两者都是数字,则它们会相加。在这里,在 的一元加之后,它是一个数字,并且也是一个数字,所以它们被加在一起。expression1expression2+.valuefoobar
但在
document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +document.getElementById('n2').value
现在,正确的表达式是字符串而不是数字。+仅当两边都是数字时才相加。someNumber + someString结果串联。
如果要加,+请先确保两边都是数字。
- 3 回答
- 0 关注
- 110 浏览
添加回答
举报