Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2015, 14:07
Новичок на форуме
Отправить личное сообщение для Makk Посмотреть профиль Найти все сообщения от Makk
 
Регистрация: 23.05.2015
Сообщений: 4

Не прибавляет а подставляет! (типы переменных)
Не силен в JS наверняка всё очевидно, но сам разобраться не могу (

Вот такой код:

<p>В поле &quot;сумма платежа&quot;
  следует указать сумму с учетом комиссии в 2%. Для удобства воспользуйтесь нашим калькулятором:</p>
<p>
  <label for="number">Сумма</label>
  <input type="number" name="summa" id="summa" onChange="Rech() "> 
  + 2% = <input type="number" name="rezul" id="rezul">
</p>

<script>
function Rech()
{
var sum = document.getElementById("summa").value, rez;
var rez = sum + (sum / 100 * 2) 
document.getElementById("rezul").value = rez;
}
</script>


Вместо результата получения процента и прибавления его к исходному числу, получаю подстановку, то есть (200 / 100 * 2) + 200 = не 204 а 2004.

Что не так?
Ответить с цитированием
  #2 (permalink)  
Старый 01.06.2015, 14:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

var sum = +document.getElementById("summa").value
Ответить с цитированием
  #3 (permalink)  
Старый 01.06.2015, 14:24
Новичок на форуме
Отправить личное сообщение для Makk Посмотреть профиль Найти все сообщения от Makk
 
Регистрация: 23.05.2015
Сообщений: 4

Плюсик в карму вам за этот плюсик)
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2015, 09:42
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

Если почитаешь про приведение типов, то найдешь там, что при одновременной обработке строкового и числового типа приоритет будет отдан строковому по возможности. Т.к. в JS операция + означает, как математическое сложение, так и конкатенацию строк, а значения input'ов всегда строковые, то ты имеешь конкатенацию строковой sum c числом в скобке (операции деления и умножения не могут быть применены к строке, поэтому в скобке sum преобразуется к числовому типу).
Ответить с цитированием
  #5 (permalink)  
Старый 02.06.2015, 10:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

demoniqus,
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Избавление от глобальных переменных при проходе алгоритма через несколько ивентов shoo Общие вопросы Javascript 4 13.11.2012 12:07
Назначение переменных из вне qazibum Общие вопросы Javascript 4 16.08.2012 02:00
Значение переменных из JavaScript в PHP pr43unknown Общие вопросы Javascript 3 18.01.2012 18:37
Нужно узнать какая из трех переменных больше! shureg Общие вопросы Javascript 2 24.08.2011 11:05