Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не выполняется арифметическое действие (сложение) (https://javascript.ru/forum/events/79460-ne-vypolnyaetsya-arifmeticheskoe-dejjstvie-slozhenie.html)

tp-20 12.02.2020 13:12

Не выполняется арифметическое действие (сложение)
 
Всем привет.

Есть простая форма с инпутом. В инпут вводим любое число, а в диве к этому числу должно прибавляться 20 и выводиться сумма, но цифры не складываются, а конкотенируются.
Пример: 3+20 получается 320, а ожидалось 23;
100+20 получается 10020, ожидалось 120.
Как решить вопрос?

<form method="post" name="calcul" onsubmit="calculate(); return false;">
    <input name="summa" id="calc_summa" value="" type="number" max="1000" onchange="calculate();"/>
    <input name="calculate_btn" value="Рассчитать" type="submit">
</form>
                        
<div id="default" style="outline:1px solid red; height: 30px;"></div>
<div id="itog" style="outline:1px solid blue; height: 30px;"></div>

function calculate(){
        var def_input=document.getElementById("calc_summa").value;
        def_input = def_input+20; // здесь не происходит сложение
        document.getElementById('default').innerHTML=def_input;  
        document.getElementById('itog').innerHTML=(def_input+20); 
    }

    calculate();

ksa 12.02.2020 13:21

Цитата:

Сообщение от tp-20
но цифры не складываются, а конкотенируются.

Все правильно. :yes:
Т.к. у тебя не цифры, а строки. К цифрам их еще нужно привести.

У тебя допустимы только целые числа?

tp-20 12.02.2020 13:25

нет, также могут быть и float
а <input type="number"> - не имеет значения?

ksa 12.02.2020 13:31

Цитата:

Сообщение от tp-20
а <input type="number"> - не имеет значения?

Так ты же в этом убедился лично. :)

Цитата:

Сообщение от tp-20
нет, также могут быть и float

Вот тебе пример...
var a='3';
var b='20.5';
alert(+a+(+b));

ksa 12.02.2020 13:32

tp-20, вот еще примеры...
http://bologer.ru/javascript-preobra...roki-v-chislo/
https://qna.habr.com/q/376527

tp-20 12.02.2020 13:36

ksa, спасибо! то, что надо!
parseInt

laimas 12.02.2020 14:40

Цитата:

Сообщение от tp-20
а <input type="number"> - не имеет значения?

Если получать как valueAsNumber


Часовой пояс GMT +3, время: 06:36.