Если проблема у Вас есть это что вы не видите то, что ожидаете в demoshowplus
, потому что x
является строкой , и поэтому x + 2
является конкатенацией строк ("5" + 2
is "52"
), нет дополнение. Это не влияет на другое, потому что -
будет принуждать свои операнды к номерам, если они не являются числами, но +
используется как для добавления, так и для конкатенации.
Если вы хотите, чтобы преобразовать номер первого, у вас есть несколько вариантов:
- Используйте одинарный
+
: +str
- Используйте
parseInt(str)
или parseFloat(str)
- Использование
Number(str)
, который работает как +str
This answer раскрывает детали про s и минусы использования различных способов.
Вот пример использования +
:
var x = +document.getElementById("demo").innerHTML;
// -----^
document.getElementById("demoshow").innerHTML = x - 2;
document.getElementById("demoshowplus").innerHTML = x + 2;
<div id="demo">5</div>
<div id="demoshowplus"></div>
<div id="demoshow"></div>
Добро пожаловать на переполнение стека! Пожалуйста, примите [тур], осмотритесь и прочитайте [помощь], в частности [* Как задать хороший вопрос?] (/ Help/how-to-ask) Что нарушено? Тот факт, что вы не видите, что ожидаете в 'demoshowplus'? –
Я предполагаю, что это [эта проблема] (http://stackoverflow.com/questions/3638074/adding-two-numbers-in-javascript-incorrectly) – vlaz
Не пытайтесь добавить число в строку ... см. 'parseInt()' или 'parseFloat()' – Tyr