Вы используете два разных вида +
с. С первыми двумя:
<!-- 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
, чтобы превратить его в число. Но +
между expression1
и expression2
- это не унарный плюс, а сложение / объединение . Когда между двумя выражениями используется +
, если оба числа c, они добавляются вместе. Здесь после унарного плюса на .value
это число, а foobar
тоже число, поэтому они складываются вместе.
Но в
document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +document.getElementById('n2').value
Теперь Правильное выражение - это строка , а не число. +
добавляется только тогда, когда обе стороны являются числами. someNumber + someString
приводит к объединению.
Если вы хотите добавить, убедитесь, что обе стороны +
являются числами вначале.