Еще один калькулятор
Доброго времени суток, в jQuery - ui есть такая штука как .skider().
В моем варианте, при перемещении ползунка, идет расчет стоимости за 1 человека (за 1 ступень, назовем это так, +=1). Но есть так же понятие скидки. Когда значение уже на 101 ступени, а цена со скидкой уменьшается на 0.2 (то есть не 101, а 100,08). Но есть одно но! За 102 ступень, рассчитывается с 0.2, то есть нужно, чтобы на 102, оно отнимало не 0.2, а уже 0.4, на 103 - 0.6, на 104 - 0.8 и тп. Так вот сам вопрос, как вот эти целые числа (скидку) правильно реализовать, чтобы за каждый шаг, оно считало цену со скидкой... Заранее при много благодарен |
var a = 0.2, b = 102; alert(a * (b % 100)) |
а если b = 200? :)
|
:-?
function fn(a) {
return 100 < a ? a - .2 * (a - 100) : a
}
alert([fn(100), fn(103), fn(200)]);
|
Цитата:
|
Цитата:
максимальное значение вообще 10 000... Оо... и есть многомерный массив [ [1, 100], [101, 500], [501, 1000], [1001, 5000], [5001, 10000], [10000] ] и вот с него значения брать ;) |
Ну так брать 1,2,3..., а не сотни и тысячи, или же?
|
Цитата:
Тысячи - это количество клиентов... Чего так захотели я не знаю, меня ни кто не спрашивал... И при 105 клиентах надо, чтобы цена была не 104.8, а 104... то есть 105 - 0.2*5... и вот как правильно вот это считать, 0.2*5, это в этом случае, со 106 - 0.2*6 = 105.8 и тп http://codepen.io/Jonson/pen/MawGER Вот пример |
Цитата:
|
Цитата:
function fn(n)
{
return n > 100 ? n - (n - 100) *.2 : n
}
alert([fn(104),fn(105),fn(106)]);
|
Цитата:
|
Цитата:
|
Цитата:
У числа от 0 до "восьмерка на боку" можно получать крайние левые значения по маске и использовать. Но если это не закономерность, значит нужны и условия. |
Цитата:
А определяет это все дело числа 101, 501, 1001, 5001 и 10001 То есть с этих значений и начинается новый расчет ;) как -то так ;) |
Цитата:
У меня ступор, значит я не понимаю. :D |
Цитата:
за 100 - $100, за 101 - $100.8, за 102 - $101.6, за 103 - $102.4, за 104 - $103.2, за 105 - $104, за 106 - $104.8, за 107 - $105.6 и тп Получается так, скидка за количество, чем больше количество, тем больше скидка, за каждое новое значение -0.2. Я сам уже заебался, на листочке все прощеты сделал, правда с максимальными значениями, но с коде хз как |
Цитата:
|
gabe,
как будет расчёт для 600 ? 100 - 100 * 1 - 100 400 - 400 * 0.8 - 320 100 - 100 * 0.6 - 60 итого 480 так? |
gabe,
<!DOCTYPE html><html class=''>
<head><meta charset='UTF-8'><meta name="robots" content="noindex">
<link rel="canonical" href="http://codepen.io/Jonson/pen/MawGER" />
<link rel='stylesheet prefetch' href='//codepen.io/assets/reset/normalize.css'>
<script src='//codepen.io/assets/libs/prefixfree.min.js'></script>
<style class="cp-pen-styles">.sliderPrice {
width: 500px;
margin-top: 50px;
margin-left: 50px;
}
.fa-user {
position: absolute;
top: 21px;
right: 120px;
}
.mount {
font: 400 18px Arial;
background: none;
border: 0;
text-align: left;
position: absolute;
top: 17px;
left: 0px;
}
.ui-slider {
position: relative;
text-align: center;
}
.ui-slider .ui-slider-handle {
position: absolute;
z-index: 2;
width: 1.2em;
height: 1.2em;
cursor: default;
-ms-touch-action: none;
touch-action: none;
}
.ui-slider .ui-slider-range {
position: absolute;
z-index: 1;
font-size: .7em;
display: block;
border: 0;
background-position: 0 0;
}
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .3em;
background: blue;
border-radius: 15px;
}
.ui-slider-horizontal .ui-slider-handle {
top: -0.4em;
margin-left: -0.6em;
background: #3333ff;
border-radius: 50%;
}
.ui-slider-horizontal .ui-slider-range-min {
height: 100%;
left: 0;
}
.ui-slider-horizontal .ui-slider-range-min {
left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
right: 0;
}
.ui-state-hover {
background: blue;
}
.ui-state-active {
width: 25px !important;
height: 25px !important;
top: -0.6em !important;
border: 0;
outline: none;
}
p {
margin: 100px;
}
</style></head><body>
<section class="sliderPrice">
<i class="fa fa-user"></i>
<label for="amount"></label>
<input type="text" id="amount" class="mount" readonly>
</section>
<p></p>
<script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
<script>
$(".sliderPrice").slider({
value: 0,
min: 0,
max: 1e4,
step: 1,
slide: function(e, i) {
for (var l = i.value, a = [
[100, 1],
[400, .8],
[500, .6],
[4000, .4],
[4999, .2],
[1, .1]
], r = 0, n = 0; n < a.length; n++) {
if (l -= a[n][0], !(l > 0)) {
r += (a[n][0] + l) * a[n][1];
break
}
r += a[n][0] * a[n][1]
}
$(".mount").val(i.value + " - $" + r.toFixed(2))
}
});
$('.mount').val('0' + ' - ' + '$' + $('.sliderPrice').slider('value'));
</script>
</body></html>
|
Спасибо большое за помощь...
И разобрался и показали как... ;) СПАСИБО! |
gabe,
в коде выше поправил массив скидок |
| Часовой пояс GMT +3, время: 03:28. |