Задать вопрос
@prokopn

Как вывести сумму двух текстовых полей?

Подскажите как вывести сумму двух полей? У меня почему-то добавляется просто к другому текстовому полю цифры, а должна вывестись сумма этих двух полей. Спасибо
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 4
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Это базовые особенности языка. Объясняются в любом учебнике.
В джаваскрипт оператор "+" является двойственным. В зависимости от ситуации он может быть как оператором сложения (чисел), так и оператором конкатенации (склеивание строк).

Здесь оба операнда являются строками, поэтому знак плюс будет оператором конкатенации.
let s1 = '1';
let s2 = '2';
console.log(s1 + s2); // '12'


Здесь оба операнда являются числами, поэтому знак плюс будет оператором сложения.
let n1 = 1;
let n2 = 2;
console.log(n1 + n2); // 3


Могут быть ситуации, когда один из операндов будет числом, а другой – строкой.
В этом случае числовой операнд будет преобразован в строку
let s1 = '1';
let n2 = 2;
console.log(s1 + n2); // '12'


Когда вы получаете значения инпутов со страницы, они всегда будут строчного типа, во всех ситуациях. Поэтому, прежде чем выполнять над этими значениями математические операции, их нужно преобразовать в числа
parseInt() - в целое число
parseFloat() - в число с плавающей точкой
Number() - можно еще так
+n2 - или так (это уже своего рода хак, основанный на приведении типов)

Number(element1.innerHTML) + Number(element2.innerHTML)


Все подробности здесь https://learn.javascript.ru
Ответ написан
Комментировать
@historydev Куратор тега JavaScript
Редактирую файлы с непонятными расширениями
Number('123')
parseInt('123')
+'123'
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
У вас numberStudentsPrice.innerHTML и numberStudentsPriceWeekend.innerHTML являются текстом, вот они и складываются как текст. Используйте parseInt(), если нужно работать с ними как с целыми числами.
Ответ написан
georgi1984
@georgi1984
Нравится JavaScript
Попробуй поставить + перед innerHTML
const totalWeekend =
    +numberStudentsPrice.innerHTML + +numberStudentsPriceWeekend.innerHTML;
  numberStudentsPrice.innerHTML = totalWeekend;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы