Потому что вы объединяете строки.Не совпадает 1 + 0
с "1" + "0"
, как вы можете проверить здесь:
console.log("1 + 0 =", 1 + 0);
console.log('"1" + "0" =', "1" + "0");
Когда вы получаете значение из объекта HTML, вы получаете его в виде строки.Если вы хотите использовать его как число, вы должны конвертировать его раньше.Вы можете использовать Number
или parseFloat
(даже parseInt
, но удалит десятичные дроби).
var oneNumber = 1;
var oneString = "1";
var oneConverted = Number(oneString);
console.log("typeof oneNumber:", typeof oneNumber);
console.log("typeof oneString:", typeof oneString);
console.log("typeof oneConverted:", typeof oneConverted);
console.log("oneNumber + oneNumber =", oneNumber + oneNumber);
console.log('oneString + oneString =', oneString + oneString);
console.log('oneConverted + oneConverted =', oneConverted + oneConverted);
Точная проблема, с которой вы столкнулись, заключается в том, что ваша переменная ene_enden
представляет собой строку в строке var rope_price = (length*vprice) + ene_enden;
.Когда вы умножаете две строки, они автоматически преобразуются в число (ваш (length*vprice)
), но когда вы объединяете это число с другой строкой, они снова автоматически преобразуются в строку (ваш + ene_enden
), поэтому вы должны сначала преобразоватьene_enden
в число, лучше не преобразовывать все ожидаемые числовые переменные в число.