Простенький калькулятор для сайта
Всем привет!
Для начала - я не программист) но посмотрела пару уроков(пока что) на javascript т.к. мне для сайта нужен написать калькулятор, а программисты заломили цены >___< Учитывая что, калькулятор нужно будет постпенно обновлять, добавлять пункты, то я больше потрачу чем заработаю своим горе-сайтом) Так что решила научится сама :victory: Итак) Калькулятор шкафов-купе) Точнее их дверей) Дано. Есть профиль дверей. у него фиксированные цены, зависят от количества дверей и ширины шкафа( цены вот: https://dl.dropboxusercontent.com/u/...46.54%20PM.png Есть наполнение дверей (стекло, зеркало, ДСП и т.д.), цена за метр квадратный. 2 двери нельзя - нельзя при ширине проема больше 2950мм, только 3 и 4. Галочка доставка - добавляет 1000р Галочка установка - умножает количество дверей на 700р. Галочка нанесение пескоструйнх рисунков - 1350 * кол-во дверей. Есть задача которые я не знаю как решить, и прошу у вас совета. 1)Сделать option количества дверей 2 неактивными(или удалить его вообще) при ширине шкафа больше 2950мм. 2)Сделать галочку пескоструные рисунки неактивной если выбран ротанг или ДСП( только для зеркала и стекла это возможно) Есть конечно еще куча идей, но потом. Не ругайте сильно - вот что у меня получилось: <script type="text/javascript"> function calc() { var opt = document.getElementById("2dveri"); var vis = document.getElementById("vis"); var shir = document.getElementById("shir"); var dveri = document.getElementById("dveri"); var fill = document.getElementById("fill"); var dost = document.getElementById("dost"); var ust = document.getElementById("ust"); var result = document.getElementById("result"); var sq = parseInt(shir.value) * parseInt(vis.value); var filling = parseInt(fill.options[fill.selectedIndex].value); var cdveri = parseInt(dveri.options[dveri.selectedIndex].value); var profil; if ((parseInt(shir.value <= 2950) && (cdveri == 2)){ profil = 3960; } else if ((parseInt(shir.value) <= 2950) && (cdveri == 3)){ profil = 4950; } else if ((parseInt(shir.value) <= 2950) && (cdveri == 4)){ profil = 5940; } else if ((parseInt(shir.value) >= 2950) && (cdveri == 3)){ profil = 6930; } else if ((parseInt(shir.value) >= 2950) && (cdveri == 4)){ profil = 7810; } else{ profil = 0; }; var ustanovka = (ust.checked == true) ? parseInt(ust.value) * cdveri : 0; var dostavka = (dost.checked == true) ? parseInt(dost.value) : 0; var risunok; if ((filling == 2 || 3) && (ris.checked == true)) { risunok = parseInt(ris.value) * sq/1000000; } else {risunok = 0; }; var price = 0; price += (Math.ceil(sq * filling/1000000 + profil + dostavka + ustanovka +risunok )) ; result.innerHTML = price;} </script> <input id="vis" type="text" value="2300" onchange="calc()" /> высота, в мм <br/> <input id="shir" type="text" value="2500" onchange="calc()" /> ширина, в мм <br/><b>Наполнение:</b><br/> <select onchange="calc()" id="fill"> <option value="0">Выбрать</option> <option value="1300">Стекло</option> <option value="1500">Зеркало </option> <option value="1400">Ротанг</option> <option value="1400">ДСП</option> </select><br/> <b>Кол-во дверей:</b><br/> <select onchange="calc()" id="dveri"> <option value="0">Выбрать</option> <option id="2dveri" value="2">2</option> <option id="3dveri" value="3">3</option> <option id="4dveri" value="4">4</option> </select><br/> <input type="checkbox" onchange="calc()" value="333" id="dost" /> <label for="dost">Требуется доставка?</label> <br/> <input type="checkbox" onchange="calc()" value="555" id="ust" /> <label for="ust">Требуется установка?</label> <br/> <input type="checkbox" onchange="calc()" value="1350" id="ris" /> <label for="ris"> Нанесение пескоструйных рисунков</label> <div>Примерная стоимость дверей: <span id="result">0</span> руб.</div> Вот ! Жду ваших советов))) Спасибо! :-? |
здесь пропущена закрывающая скобка
if ((parseInt(shir.value <= 2950) && (cdveri == 2)){ Цитата:
Или 0, 3 и 4? Что делать, если у пользователя было выбрано 2 двери, а затем он увеличил ширину проема? Сбрасывать на 0 или увеличивать до 3? |
Проверяйте на расчетах, потому что вот это в вашем коде не учитывается почему-то
Цитата:
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>Калькулятор</title></head> <body> <form id="form" name="form"> <input id="vis" type="text" value="2300" /> высота, в мм <br/> <input id="shir" type="text" value="2500" /> ширина, в мм <br/> <b>Наполнение:</b> <br/> <select id="fill"> <option value="0">Выбрать</option> <option value="1300">Стекло</option> <option value="1500">Зеркало </option> <option value="1400">Ротанг</option> <option value="1400">ДСП</option> </select><br/> <b>Кол-во дверей:</b> <br/> <select id="dveri"> <option value="0">Выбрать</option> <option id="2dveri" value="2">2</option> <option id="3dveri" value="3">3</option> <option id="4dveri" value="4">4</option> </select> <br/> <input type="checkbox" value="1000" id="dost" /> <label for="dost">Требуется доставка?</label> <br/> <input type="checkbox" value="700" id="ust" /> <label for="ust">Требуется установка?</label> <br/> <input type="checkbox" value="1350" id="ris" /> <label for="ris">Нанесение пескоструйных рисунков</label> <div>Примерная стоимость дверей: <span id="result">0</span> руб.</div> </form> <script> document.body.onload = function() { function calc() { var d = document, profil = risunok = ustanovka = dostavka = 0; var vis = +d.getElementById("vis").value, shir = +d.getElementById("shir").value, dveri = d.getElementById("dveri"), fill = d.getElementById("fill"), dost = d.getElementById("dost"), ust = d.getElementById("ust"), ris = d.getElementById("ris"), result = d.getElementById("result"); if(shir > 2950) { if(dveri.options[dveri.selectedIndex].value == '2') { dveri.options[2].selected = true; } d.getElementById('2dveri').style.display = 'none'; } else d.getElementById('2dveri').style.display = ''; if(fill.selectedIndex == 3 || fill.selectedIndex == 4) { ris.checked = false; ris.disabled = true; } else { ris.disabled = false; }; var sq = shir * vis / 1000000, cdveri = +dveri.value; if (shir <= 2950 && cdveri == 2) profil = 3960; else if (shir <= 2950 && cdveri == 3) profil = 4950; else if (shir <= 2950 && cdveri == 4) profil = 5940; else if (shir >= 2950 && cdveri == 3) profil = 6930; else if (shir >= 2950 && cdveri == 4) profil = 7810; if (ust.checked) ustanovka = +ust.value * cdveri; if (dost.checked) dostavka = +dost.value; if (ris.checked) risunok = +ris.value * cdveri; result.innerHTML = Math.ceil(sq * +fill.value + profil + dostavka + ustanovka + risunok ); }; document.form.onchange = calc; calc(); } </script> </body> </html> Цитата:
|
Спасибо! Странно - каким то чудом все таки работал мой код))
http://yarkoyarko.ru/calc.html По поводу дверей. Я посовещелась с мастером на производстве и он мне сказал что двери наилучшим образом делать так: Ширина проема от 600мм до 6000мм. Если пользователь ввел меньше/больше, выводить сообщение что мы не изготоваливаем такие размеры. Ширина проема делится на 1200(это макисмально возможная ширина одной двери) - получается минимальное количество дверей. Больше можно , меньше нельзя. Нарпример, пользователь ввел ширину 2500. Минимальное количество дверей для него - 3. Ширина каждой двери 834мм. Количество дверей макисмальное - пускай будет 10(никто столько не заказывает, но пусть будет...) т.е. от 2 до 10. Вообщем до момента как скрывать/делать неактивными элементы option в selecte мне все более или менее ясно.. Если ширину увеличили, то дверей должно стать например 3, но человек может выбрать и 4 и больше. Главное сделать недоступным то количество дверей при котором ширина одной двери становится больше 1200мм. Вот нашла код где похожа задача(с деактивацией списка). Но немного не та))) Когда выбрана 1 опция то другая опция становится недоступна. http://jsfiddle.net/davidThomas/qE4fN/ Что касается вопроса сколько заламывали цену - от 15 000р. Я начинаю свое дело без денег(их просто нет), которое еще не изветно пойдет или нет, поэтому мне сумма эта неподъемная, и сайт сделала сама на шаблончике) А дальнейшем я конечно сделала бы все в лучшем виде... Спасибо.. |
у меня там стояло value 333 и 555)) я пока писла цифры от балды главное чтоб работали!))
<input type="checkbox" onchange="calc()" value="333" id="dost" /> <input type="checkbox" onchange="calc()" value="555" id="ust" /> |
Цитата:
Цитата:
|
ну видят человек не слишком сведущий) и разводят как лоха ..)
|
о! я только сейчас заметила, что 2 двери стали неактивные) Спасибо!!
Почему то у меня 2ка по прежнему черная - поэтому я не сразу заметила!! может ее както сделать по аналогии с ris.disabled = true;, который серым становится, типа d.getElementById('2dveri').disabled = true; Попробовала подставить- не работает) а нет, работает! |
Вложений: 2
Цитата:
Если выбран ротанг и ДСП, то галочка рисунка становится неактивной. Если до выбора галочка стояла, она автоматически снимается. |
а у меня видно... Браузер Chrome.
Перескакивает автоматически, это да. Выбрать ее невозможно, то есть все верно кроме того что по прежнему видно. Я попробовала через - d.getElementById('2dveri').disabled = true; - становится неактивной серой как и чекбокс пескоструных рисунков. UPD. В Firefox не видно! в Chrome видно, в Safari видно. |
Часовой пояс GMT +3, время: 18:05. |