Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2020, 13:12
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 44

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

Есть простая форма с инпутом. В инпут вводим любое число, а в диве к этому числу должно прибавляться 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();
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2020, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от tp-20
но цифры не складываются, а конкотенируются.
Все правильно.
Т.к. у тебя не цифры, а строки. К цифрам их еще нужно привести.

У тебя допустимы только целые числа?
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2020, 13:25
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 44

нет, также могут быть и float
а <input type="number"> - не имеет значения?
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2020, 13:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от tp-20
а <input type="number"> - не имеет значения?
Так ты же в этом убедился лично.

Сообщение от tp-20
нет, также могут быть и float
Вот тебе пример...
var a='3';
var b='20.5';
alert(+a+(+b));
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2020, 13:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

tp-20, вот еще примеры...
http://bologer.ru/javascript-preobra...roki-v-chislo/
https://qna.habr.com/q/376527
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2020, 13:36
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 44

ksa, спасибо! то, что надо!
parseInt
Ответить с цитированием
  #7 (permalink)  
Старый 12.02.2020, 14:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от tp-20
а <input type="number"> - не имеет значения?
Если получать как valueAsNumber
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выполняется блок else? DivMan Общие вопросы Javascript 2 10.03.2016 14:11
Один обработчик для всех ninzzo Events/DOM/Window 4 02.02.2014 00:27
Скрипт сложение работает не так, нужна помощь! saves7 Общие вопросы Javascript 4 09.08.2013 08:07
Не выполняется элементарное арифметическое действие. КАК?! gemini Общие вопросы Javascript 4 07.10.2012 14:40
Не выполняется внутри JQuery.post frundik Элементы интерфейса 3 14.08.2012 11:35