Нужна помощь специалиста по JavaScript

123
C
На сайте с 04.02.2005
Offline
291
#11

Сколько у вас коэффициентов?

Если на каждые 10кг у вас свой, то, возможно есть какой-то алгоритм расчета тарифа.

Если нет, то его нужно жестко прописывать

и строить Огромную елочку из ifов.

if (вес <= минимальннго) tarif=

elseif (вес <= минимальный+след) tarif =

elseif ... etc

alexj69
На сайте с 05.06.2007
Offline
88
#12

По 5 коэффициентов для каждой переменной.

-в зависимости от веса: до 500 кг- 1.08; до 800 кг - 1.007; до 1500 кг - 1; до 3000 кг - 0.95; более 3000 кг - 0.833
-в зависимости от объема: до 2,5 - 1.055; до 4 - 1; до 7,5 - 0.965; до 15 - 0.92; более 15 - 0.907
C
На сайте с 04.02.2005
Offline
291
#13

если всего дищь 5, то почему не select?

<options value=1.08>до 500 кг

<options value=1.007>от 500 до 800 кг

etc

и с объемом по аналогии.

alexj69
На сайте с 05.06.2007
Offline
88
#14

Вы, наверное, не поняли. Пользователь вводит вес груза (например 210 кг или 605 кг) и от этого введенного значения должен выбираться коэффициент. При расчете стоимости учитывается введенный вес, тариф и коэффициент. ({wes}*{tWes}*{kWes})

bukachuk
На сайте с 07.09.2008
Offline
97
#15

onchange="function(this.value)" 
- так красивей:D

А для данных просто создать массив и выводить нужное значение, а то что-то if много

Программирование PHP,Mysql (/ru/forum/934470)
alexj69
На сайте с 05.06.2007
Offline
88
#16

Тоже считаю, что при помощи массивов было бы правильнее сделать, но у меня не хватает знаний чтобы это реализовать...

webrock
На сайте с 05.04.2010
Offline
261
#17
alexj69:
Тоже считаю, что при помощи массивов было бы правильнее сделать, но у меня не хватает знаний чтобы это реализовать...

знания нужно приобретать, покупать ...

вот дайте программисту денежку, он реализует вашу "мечту", а вы посмотрите

исходный код и получите знания ... вот так стэп бай стэп ...

ну, а если добрый программер тут выложит своё решение, значит считай

повезло ... ХАЛЯВА ...

Полный аудит сайтов. (/ru/forum/765361)
siv1987
На сайте с 02.04.2009
Offline
427
#18


val = 300;
wg = new Array(['500','1.08'], ['800','1.007'], ['1500','1'], ['3000','0.95'], ['more','0.833']);
_k = wg[ wg.length-1 ][1];
for(i=0; i<wg.length; i++){
if( val <= wg[0] ){
_k = wg[1];
break;
}
}
alert( _k );
alexj69
На сайте с 05.06.2007
Offline
88
#19

siv1987, у Вас код красивый, но я пока сделал на простых ифах. Получилось вот так:

kw=(function (){

var w = document.getElementById("wes").value;
var k_wes, kw1=1.08, kw2=1.007, kw3=1, kw4=0.95, kw5=0.833;
if(w<=500)document.getElementById("k_wes").value=kw1;
if(w>500 && w<=800) document.getElementById("k_wes").value=kw2;
if(w>800 && w<=1500) document.getElementById("k_wes").value=kw3;
if(w>1500 && w<=3000) document.getElementById("k_wes").value=kw4;
if(w>3000) document.getElementById("k_wes").value=kw5;
document.forms['calcForm'].elements['wes'].fireEvent('change');
});

и на текстовый инпут поставил обработчик событий onKeyUp. Спасибо за помощь.

webrock, при более сложных задачах обязательно закажу у профессионала))))

C
На сайте с 04.02.2005
Offline
291
#20

Ну почему все так бездумно?

Не любите вы компьютер, заставляете его думать

if(w<=500)

document.getElementById("k_wes").value=kw1;
else if (w<=800)
document.getElementById("k_wes").value=kw2;
else if (w<=1500)
document.getElementById("k_wes").value=kw3;
else if (w<=3000)
document.getElementById("k_wes").value=kw4;
else
document.getElementById("k_wes").value=kw5;
123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий