Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2011, 16:12
Новичок на форуме
Отправить личное сообщение для Dintra Посмотреть профиль Найти все сообщения от Dintra
 
Регистрация: 09.12.2011
Сообщений: 2

Корректная работа калькулятора.
Есть рабочий скрипт (ниже).
На данный момент калькулятор каждый из параметров длины, ширины и высоты (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>
Ответить с цитированием
  #2 (permalink)  
Старый 09.12.2011, 18:57
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Внимательно прочтите это http://javascript.ru/basic/operators#arifmeticheskie
x, y, z у вас — строки, а не числа.
Ответить с цитированием
  #3 (permalink)  
Старый 09.12.2011, 20:35
Новичок на форуме
Отправить личное сообщение для Dintra Посмотреть профиль Найти все сообщения от Dintra
 
Регистрация: 09.12.2011
Сообщений: 2

Большое спасибо за ответ. Разобрался и исправил ошибку. работает все корректно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
Aсcodition не корректная работа mycoding Общие вопросы Javascript 1 18.06.2010 20:52
Скрипт калькулятора ЕМС-почты России battrack Ваши сайты и скрипты 2 03.03.2009 20:20
не корректная работа JavaScript в Mazille 3 LiNa Общие вопросы Javascript 0 15.07.2008 14:36