Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2014, 23:08
Новичок на форуме
Отправить личное сообщение для alenka_savage Посмотреть профиль Найти все сообщения от alenka_savage
 
Регистрация: 19.12.2014
Сообщений: 2

Использование комбинаций 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 . Это ужассс
Помогите )
Ответить с цитированием
  #2 (permalink)  
Старый 20.12.2014, 15:51
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

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': {
		...
		...
		...
	}
};
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2014, 19:31
Новичок на форуме
Отправить личное сообщение для alenka_savage Посмотреть профиль Найти все сообщения от alenka_savage
 
Регистрация: 19.12.2014
Сообщений: 2

Произвести арифметические действия проблем нет. Проблема в другом
//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 мин своего времени, чтобы сказать как это можно разрешить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные в скрипте vvkk Элементы интерфейса 19 08.09.2014 18:10
JavaScript. Уровень 3в. Серверное программирование на Node.js maxy666 Node.JS 8 10.08.2014 00:36
Jquery, Последовательное выполнение функций разных div в одном скрипте. schnitzer Общие вопросы Javascript 3 29.09.2013 02:49
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Использование функции в скрипте Stalin45 Элементы интерфейса 24 10.07.2013 16:22