Не прибавляет а подставляет! (типы переменных)
Не силен в JS наверняка всё очевидно, но сам разобраться не могу (
Вот такой код: <p>В поле "сумма платежа" следует указать сумму с учетом комиссии в 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. Что не так? |
var sum = +document.getElementById("summa").value
|
Плюсик в карму вам за этот плюсик)
|
Если почитаешь про приведение типов, то найдешь там, что при одновременной обработке строкового и числового типа приоритет будет отдан строковому по возможности. Т.к. в JS операция + означает, как математическое сложение, так и конкатенацию строк, а значения input'ов всегда строковые, то ты имеешь конкатенацию строковой sum c числом в скобке (операции деления и умножения не могут быть применены к строке, поэтому в скобке sum преобразуется к числовому типу).
|
demoniqus,
:victory: |
Часовой пояс GMT +3, время: 10:39. |