Использование комбинаций 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, время: 15:04. |