Вход

Просмотр полной версии : Не прибавляет а подставляет! (типы переменных)


Makk
01.06.2015, 14:07
Не силен в 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.

Что не так?

рони
01.06.2015, 14:22
var sum = +document.getElementById("summa").value

Makk
01.06.2015, 14:24
Плюсик в карму вам за этот плюсик)

demoniqus
02.06.2015, 09:42
Если почитаешь про приведение типов, то найдешь там, что при одновременной обработке строкового и числового типа приоритет будет отдан строковому по возможности. Т.к. в JS операция + означает, как математическое сложение, так и конкатенацию строк, а значения input'ов всегда строковые, то ты имеешь конкатенацию строковой sum c числом в скобке (операции деления и умножения не могут быть применены к строке, поэтому в скобке sum преобразуется к числовому типу).

рони
02.06.2015, 10:10
demoniqus,
:victory: