Использование комбинаций If-else в одном скрипте
Такая проблемка.Пишу калькулятор для Ethernet. Уровень познания в js минимальный.:)
По информации в интернете написала интерфейс страницы, нашла бегунки (преподаватель попросил) ![]() Потом начала писать скрипт, требовалось: - если пользователь выбирает длину сегмента больше, чем возможно для данного типо - ругаться на него и ничего не выдавать, -если длины для типов соответствуют и все хорошо - выдавать значения и в вердикте писать "поздравляю бла бла бла" что получилось
<script type="text/javascript">
function go_result()
{
var beg_one = trackbar.getObject('one').leftValue;
var beg_two = trackbar.getObject('two').leftValue;
var value_one = document.Q.rb1.value;
var value_two = document.Q.rb2.value;
if(beg_one <= value_one && beg_two <= value_two)
{
if(value_one == 500)
{
sum_pvd1 = 11.8 + beg_one*0.0866;
sum_pvv1 = 16;
}
else if(value_one == 185)
{
sum_pvd1 = 11.8 + beg_one*0.1026;
sum_pvv1 = 16;
}
else if(value_one == 100)
{
sum_pvd1 = 15.3 + beg_one*0.113;
sum_pvv1 = 10.5;
}
else(value_one == 2000)
{
sum_pvd1 = 12.3 + beg_one*0.1;
sum_pvv1 = 10.5;
}
if(value_two == 500)
{
sum_pvd2 = 169.5 + beg_two*0.0866;
sum_pvv2 = 11;
}
else if(value_two == 185)
{
sum_pvd2 = 169.5 + beg_two*0.1026;
sum_pvv2 = 11;
}
else if(value_two == 100)
{
sum_pvd2 = 165 + beg_two*0.113;
sum_pvv2 = 2;
}
else(value_two == 2000)
{
sum_pvd2 = 156.5 + beg_two*0.1;
sum_pvv2 = 8 ;
}
}
else
{
sum_pvv2 =0;
sum_pvd2 =0;
}
document.C.bars.value = (sum_pvd2 > 0) ? 'Поздравляю! У вас получилась корректная схема ЛВС Ethernet.' : 'Так делать не стоит. Прочитайте правила выборы длины сегмента и попробуйте еще раз.';
document.C.pvd.value = sum_pvd1 + sum_pvd2;
document.C.pvv.value = sum_pvv1 + sum_pvv2;
}
Тут trackbar.getObject('one').leftValue это информация о значении бегунка 1 , trackbar.getObject('tow').leftValue - о бегунке 2. document.Q.rb1.value - 1й набор выкотолотых точек, а var value_one = document.Q.rb2.value 2й набор. Проблема в том что PVV и PVD всегда выдает одинаковое , какой бы я не тыкала тип . Всегда выдает 18.5 для PVV. Слава богу смогла добиться, чтобы когда вылазило за максимальную длину ругался . 18.5 - это 10.5 + 8 , ну то есть заходит всегда в оба else. Что делать не знаю, потому что в теории вообще не сильна, делала по аналогии все. Думала как бы сделать в одну комбинацию if-else , но у меня максимальное количество сегментов может быть 5(это тут укорченный вариант с 2мя сегментами) , то есть получается c таким подходом 4 в пятой степени if`ов тогда , то есть 1024 . Это ужассс :blink: Помогите ) |
alenka_savage, для начала вам надо создать объект констант типов сегментов:
Методика расчета
var segConst = {
'10Base-5': {
len: 500, // максимальная длина сегмента
pdv: {l: 11.8, c: 46.5, r: 169.5, d: 0.0866}, // l, c, r - база левого, среднего, правого сегмента, d - задержка среды
pvv: {l: 16, c: 11} // l, c - значение левого, среднего сегмента
},
'10Base-2': {
...
...
...
},
'10Base-T': {
...
...
...
},
'10Base-F': {
...
...
...
}
};
|
Произвести арифметические действия проблем нет. Проблема в другом
//1 бегунок
if(... )
{
...
}
else if(...)
{
...
}
else if(... )
{
...
}
else if(... )
{
...
}
else
{
..
}
//2 бегунок
if(... )
{
...
}
else if(...)
{
...
}
else if(... )
{
...
}
else if(... )
{
...
}
else
{
..
}
Вот тут есть 2 блока if-else. Будьте добры скажите, почему оба раза заходит только в else?! Выполняются только операции в else. Вот в чем дело. P.S. Я уверена вопрос простой. Просто при написании такой конструкции в других языках. На которых я собственно и пишу, таких проблемок нету . Потратьте пожалуйста 2 мин своего времени, чтобы сказать как это можно разрешить. |
| Часовой пояс GMT +3, время: 10:43. |