JavaScript

JavaScript. Как прибавить между собой инпуты.

Надо чтоб они плюсовались друг с другом. Мой вариант почему то выдает ответ не от "1+1+1" а "111"
var p = +test.value+tets2.value+test3.value;
Bodya Kosovan
Bodya Kosovan
1 198
Лучший ответ
То что вводится с клавиатуры это всегда строка. И ее нужно приводить к числовому типу
Евгений З@йк@
Евгений З@йк@
51 476
Александр Астафьев я итак привел, написал "number"
var test   = document.getElementById('test');
var test2 = document.getElementById('test2');
var test3 = document.getElementById('test3');

var p = +test.value + (+test2.value) + (+test3.value);

alert( test );
_____________

Number("строка")
+"строка"

делают одно и то же - превращают строку в число. Причем плюсик можно использовать без скобок.

Код будет работать и без первых 3-х строчек, но вредно привыкать так писать... это потенциальный источник ошибок, если код станет чуть больше.

P.s. https://learn.javascript.ru/ - первые 4-5 разделов необходимы...
____________________________

То, что JS съел эту хрень из картинки, не значит что надо так делать...

document.getElementById( "test".value );

У строки "test" нет свойства value, поэтому "test".value возвращает `undefined`

document.getElementById( undefined );

возвращает null... который никуда не сохраняется, поэтому всё еще нет ошибки...

Но браузер сам создает глобальные переменные, ссылающиеся на HTML-элементы, одноименные с их `id`...

test.value + test2.value + test3.value

Это правда значения соответствующих инпутов, но они получаются в виде строки, а строки не суммируются как числа, даже если в них хранятся числа.
https://jsfiddle.net/xfzb576v/

Как уже ответили, тип значения "строка", нужно привести к числовому.

let form = document.getElementById( "sum" );

form.addEventListener( "submit", ( e ) => {
e.preventDefault();
alert(
( +form.elements.a.value ) + ( +form.elements.b.value )
);
});