Страница 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)
);
}
);
}


Чё только не приснится ночью . гы...

Дико извиняюсь за то что влез в тему не по теме :[|]:

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 - Инструменты -- Дополнительно -- Консоль ошибок