Страница 1 из 1
а кто умный в scriptах?

Добавлено:
21 сен 2008, 14:48
noa
поможите плиз.
есть простая функция, которая тупо перемножает количество на цену (цену тоже запрашивает в input).
а как сделать, чтобы цена менялась в зависимости от кличества?
например qty <=5 then price=2
qty 6-15 --- price=1.5
qty >15 ...
как бы не совсем синтаксис яваскрипта знаю
- Код: Выделить всё
function recalc(){
$("[@id^=total_item]").calc(
"qty * price",
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}
Re: а кто умный в scriptах?

Добавлено:
21 сен 2008, 14:56
Serdar1980
function recalc(){
if(qty < 5){
price =2;
}else if(qty<15){
price =1.5;
}else if(qty>15){
price =0.5;
}
$("[@id^=total_item]").calc(
"qty * price",
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}
примерно так но точного синтаксиса не знаю странный какой-то он
Re: а кто умный в scriptах?

Добавлено:
21 сен 2008, 14:59
noa
не, даже не протестировав, вижу что не так.
во-первых:
if(qty < 5){
price =2;
}else if(qty<15){
price =1.5;
цифра 3 подходит под оба эти выражения: она меньше 5 и меньше 15 - интепретатор моск себе сломает, выбирая какую цену всё-такип поставить.
а, во-вторых, в самой функции никак не учитываются эти условия
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
как бы вот ещё что надо доработать
Re: а кто умный в scriptах?

Добавлено:
21 сен 2008, 15:08
Serdar1980
подходит она только под одно так как там стоит else if
если первое условие выполнилось то дальше уже проверяться не будет.
Добавлено спустя 42 секунды:
еще раз повторюсь не знаю такого синтаксиса..
поэтому написал как знаю
Re: а кто умный в scriptах?

Добавлено:
21 сен 2008, 20:25
sbs
- Код: Выделить всё
function recalc(){
if(qty < 5){
kprice =1;
}else if(qty<15 && qty>=5){
kprice =0.75;
}else if(qty>=15){
kprice =0.5;
}
$("[@id^=total_item]").calc(
"qty * price * kprice",
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}
Могет быть так?
Re: а кто умный в scriptах?

Добавлено:
22 сен 2008, 09:40
Serdar1980
if(qty < 5){
kprice =1;
}else if(qty<15 && qty>=5){
kprice =0.75;
}else if(qty>=15){
kprice =0.5;
}
if(qty < 5){
price =2;
}else if(qty<15){
price =1.5;
}else if(qty>15){
price =0.5;
}
они будут работать одинаково так как если
qty <5 то отработает первый if
qty >5 то первый if будет лож и попадет в else где qty <15
если qty >15 то и первый и второй if буду ложью
тогда и отработает 3 if
Ваш вариант тоже правильный и возможно нагляднее понятнее что происходит
Re: а кто умный в scriptах?

Добавлено:
22 сен 2008, 12:51
sbs
Согласен. И так как у меня, я считаю, надежнее - если придется менять один из ифов, не надо следить за другими.
Re: а кто умный в scriptах?

Добавлено:
22 сен 2008, 18:29
noa
sbs писал(а):- Код: Выделить всё
[size=50]
function recalc(){
if(qty < 5){
kprice =1;
}else if(qty<15 && qty>=5){
kprice =0.75;
}else if(qty>=15){
kprice =0.5;
}
$("[@id^=total_item]").calc(
"qty * price * kprice",
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}[/size]
Могет быть так?
ну может быть, тока синтаксис пока не подходит.
переменные задаются вот тут:
- Код: Выделить всё
// define the variables used in the equation, these can be a jQuery object
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
следовательно на твой пример выскакивает ошибка:
message: Statement on line 78: Undefined variable: qty
if(qty < 5){
Re: а кто умный в scriptах?

Добавлено:
22 сен 2008, 20:09
Kykyzilla
noa писал(а):поможите плиз.
есть простая функция, которая тупо перемножает количество на цену (цену тоже запрашивает в input).
а как сделать, чтобы цена менялась в зависимости от кличества?
например qty <=5 then price=2
qty 6-15 --- price=1.5
qty >15 ...
как бы не совсем синтаксис яваскрипта знаю
[code] function recalc(){
$("[@id^=total_item]").calc(
"qty * price",
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}
Чё только не приснится ночью . гы...
Дико извиняюсь за то что влез в тему не по теме
![Ну ка, побояню! :[|]:](./images/smilies/bayan.gif)
Re: а кто умный в scriptах?

Добавлено:
22 сен 2008, 20:16
sbs
- Код: Выделить всё
function recalc(){
{
qty: $("input[@name^=qty_item_]"),
price: $("[@id^=price_item_]")
},
if(qty < 5){
kprice =1;
}else if(qty<15 && qty>=5){
kprice =0.75;
}else if(qty>=15){
kprice =0.5;
}
$("[@id^=total_item]").calc(qty * price * kprice)
function (s){
return s.toFixed(2);
},
function ($this){
var sum = $this.sum();
$("#grandTotal").text(
sum.toFixed(2)
);
}
);
}
Ну тогда так.
Просто правил предыдущего оратора и не обратил внимания. Виноват!
Re: а кто умный в scriptах?

Добавлено:
23 сен 2008, 19:16
noa
не-не-не. теперь пишет совсем
Expected token: ';'
price: $("[@id^=price_item_]")
значит надо закрывать выражение. вобщем кто правда силён в JavaScript
блин я приложу на всякий случай такой простенький калькулятор, в котором я и хочу сделать гибкую цену
http://city.is74.ru/forum/attachment.ph ... 1222000909
Re: а кто умный в scriptах?

Добавлено:
24 сен 2008, 09:04
Serdar1980
noa
а где ты все это исполняешь?
ну чтобы проверить самому можно было
Re: а кто умный в scriptах?

Добавлено:
24 сен 2008, 19:18
noa
ну любой браузер умеет.
у меня Opera - Инструменты -- Дополнительно -- Консоль ошибок