Корректная работа калькулятора.
Есть рабочий скрипт (ниже).
На данный момент калькулятор каждый из параметров длины, ширины и высоты (x, y, z) увеличивает на 20%. Но требуется увеличить эти параметры не на процент, а на целое число, т.е к каждой величине добавлять по 20 мм. Просто запись выражения (x+20)*(y+20)*(z+20) не помогает в решении проблемы, так как результат возрастает в сотни раз (как я понимаю каждая величина возрастает на 2000% ?). Помогите, пожалуйста, советом, где и что можно/нужно исправить, чтобы подсчет велся корректно? <div class="clac_form"> Длина(ММ) <input type="text" value="0" size="5" onkeydown="keyDownNumber(event);" onkeyup="setX(this.value);"/> Ширина(ММ) <input type="text" value="0" size="5" onkeydown="keyDownNumber(event);" onkeyup="setY(this.value);"/> Высота (ММ) <input type="text" value="0" size="5" onkeydown="keyDownNumber(event);" onkeyup="setZ(this.value);"/> <br>Вес (гр.)<input type="text" value="0" size="5" onkeydown="keyDownNumber(event);" onkeyup="setW(this.value);"/> Количество (шт.)<input type="text" value="0" size="5" onkeydown="keyDownNumber(event);" onkeyup="setN(this.value);"/> <select onclick="setM(this.value)"> <option value="0">Выберите материал</option> <option value="0.357">Материал 1</option> <option value="0.856">Материал 2</option> <option value="0.202">Материал 3</option> <option value="0.202">Материал 4</option> <option value="0.43">Материал 5</option> </select> <br> <input type="checkbox" id="a" onclick="reSum()" />Усложнение 1<br /> <input type="checkbox" id="b" onclick="reSum()" />Усложнение 2<br /> <input type="checkbox" id="c" onclick="reSum()" />Усложнение 3<br /> <input type="checkbox" id="d" onclick="reSum()" />Усложнение 4<br /> <input type="checkbox" id="e" onclick="reSum()" />Усложнение 5<br /> <div class="summ">Орентировочная стоимость 1 детали: <span id="summ">0</span> грн.</div> </div> <script type="text/javascript"> var x = 0; var y = 0; var z = 0; var w = 0; var n = 0; var f = 0; var material = 0; var summtemp = 1; function keyDownNumber(e) { var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode); if (key < 58 && key > 47){ return true; } else { return false; } } function reSum(){ summtemp = 1; if (document.getElementById('a').checked==true) { summtemp += 0.4; } else { summtemp += 0; } if (document.getElementById('b').checked==true) { summtemp += 0.3; } else { summtemp += 0; } if (document.getElementById('c').checked==true) { summtemp += 0.6; } else { summtemp += 0; } if (document.getElementById('d').checked==true) { summtemp += 0.9; } else { summtemp += 0; } if (document.getElementById('e').checked==true) { summtemp += 0.3; } else { summtemp += 0; } var f = Math.ceil(n/20); var summ = ((x*1.2)*(y*1.2)*(z*1.2)*0.000406+200)*f/n*summtemp+w*material*summtemp; document.getElementById('summ').innerHTML = Math.ceil (summ); } function setX(Size){ x = Size; reSum() } function setY(Size){ y = Size; reSum() } function setZ(Size){ z = Size; reSum() } function setM(price){ material = price; reSum() } function setW(weight){ w = weight; reSum() } function setN(quantity){ n = quantity; reSum() } </script> |
Внимательно прочтите это http://javascript.ru/basic/operators#arifmeticheskie
x, y, z у вас — строки, а не числа. |
Большое спасибо за ответ. Разобрался и исправил ошибку. работает все корректно.
|
Часовой пояс GMT +3, время: 23:05. |