Расчет числа исходя из положения ползунка
Доброго времени суток, делаю простую программу по расчету числа, исходя из значения value ползунка.
Возникла проблема, число считается не верно, и когда ползунок стоит в начальном положении (value = 0), итоговая сумма !=0, более того, если ползунок двигать несколько раз, итоговая сумма постоянно разная. Однозначно я начудил в коде, но не могу пофиксить, подскажите что нужно сделать, чтобы расчет был верным. Спасибо. <div class="inps"> <label for="power"> <p>Мощность</p> <input type="text" id="power" class="inp power" oninput="changeInp()"> </label> <label for="cost"> <p>Стоимость</p> <input type="text" id="cost" class="inp cost" oninput="changeRange(), changeInp()"> </label> </div> <input id='range' class='range' type="range" min="0" max="9999" step="100" value="0" oninput="changeRange()"> function changeRange() { var range = document.getElementById('range'); var power = document.getElementById('power'); var cost = document.getElementById('cost'); var sum = 0; sum = power.value * 3.30; power.value = range.value; cost.value = (sum).toFixed(2); } function changeInp() { var range = document.getElementById('range'); var power = document.getElementById('power'); var cost = document.getElementById('cost'); var sum = 0; sum = power.value * 3.30; range.value = power.value; cost.value = (sum).toFixed(2); } |
Решил проблему, был изначально неверный алгоритм действий, нужно было вычислять не от значения power а от значения range
То есть заменить (sum = power.value * 3.30) на (sum = range.value * 3.30) |
Возникает еще вопрос, как эту программу написать более корректно (грамотно)?, чтобы не стыдно было показать.
|
TheSanches,
зачем две одинаковые функции? |
Первая функция вычисляет и выводит число которое берет с value ползунка
Вторая делает тоже, но берет число с value инпута Дело в том что при вводе числа в инпут, ползунок тоже меняет свое положение на заданное и инпуте количество шагов (step= число заданное в инпуте). Вероятно все эти действия можно прописать в одной функции? |
Цитата:
|
Как-то так?
<div class="inps"> <label for="power"><p>Мощность</p></label> <input type="number" id="power" class="inp power" min="0" max="10000" step="100" value="0"> <input id='range' class='range' type="range" min="0" max="10000" step="100" value="0" > <label for="cost"><p>Стоимость</p></label> <input type="text" id="cost" class="inp cost" > </div> <script> var range = document.getElementById('range'), power = document.getElementById('power'), cost = document.getElementById('cost'), sum = 0; document.querySelector("div.inps").addEventListener("input", function(e) { console.log(e.target.id); if (e.target.id == "range") power.value = range.value; if (e.target.id == "power") range.value = power.value; sum = power.value * 3.30; cost.value = (sum).toFixed(2); }); </script> |
Спасибо, как раз то что искал
|
Часовой пояс GMT +3, время: 18:36. |