При получении ввода он возвращается в виде строки.
var s = document.getElementById("myInput").value; // value is returned as a string
Позже, когда оператор + используется для объединения (т. Е. Соединения) числа и строки, а не их добавления.
console.log(i) // 1
console.log(s) // "5"
i+=s // this is the same as i = i + s
console.log(i) // "15"
Решение состоит в том, чтобы привести (т.е. преобразовать) строку в число:
var s = Number(document.getElementById("myInput").value);
В качестве примечания, это следующее выражение умножения работает, даже если s
является строка, потому что если у вас есть число слева и умножение строки, это приведет строку к числу:
console.log(s) // "5"
var d = 10*s
console.log(d) // 50