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 關注
- 171 瀏覽
添加回答
舉報