Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.07.2016, 07:13
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение
<option value="5">Приказ</option>
<option value="6">Распоряжение</option>

это же не я придумал.
Логика данного скрипта разве не такая:
при выборе "Бухгалтерского документа" показывать див с id=Block1
function Selected(a) {
        var label = a.value;
        if (label==1) {
            document.getElementById("Block1").style.display='block';
            document.getElementById("Block2").style.display='none';
			document.getElementById("Block3").style.display='none';
			document.getElementById("Block4").style.display='none';
			document.getElementById("Block5").style.display='none';
        }
Иначе не показывать ничего.
Пользователь будет выбирать, какой документ внести, далее выбирает тип документа (из выпадающего списка) и после выбора появляется необходимая форма, допустим div id=Block5 (форма). Я пробовал присвоить id элементу списка options, но скрипт к нему не обращается..
Ответить с цитированием
  #12 (permalink)  
Старый 08.07.2016, 14:40
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Цитата:
при выборе "Бухгалтерского документа" показывать див с id=Block1
И где тут логика? Никакого отношения Block1 к бухгалтерии не имеет, это чистая абстракция, связывать которую придется прямо в хтмле. Советую не мучиться, а отдать это все сделать знающим людям.
Ответить с цитированием
  #13 (permalink)  
Старый 08.07.2016, 14:43
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от warren buffet Посмотреть сообщение
И где тут логика? Никакого отношения Block1 к бухгалтерии не имеет, это чистая абстракция, связывать которую придется прямо в хтмле. Советую не мучиться, а отдать это все сделать знающим людям.
Что значит нет логики? При выборе "бухгалтерский документ" (label==1) вываливается div Block1 с пунктами ...все же в скрипте написано.
Ответить с цитированием
  #14 (permalink)  
Старый 08.07.2016, 14:44
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от warren buffet Посмотреть сообщение
Советую не мучиться, а отдать это все сделать знающим людям.
Видимо придется так и сделать, раз тут таких нет.
Ответить с цитированием
  #15 (permalink)  
Старый 08.07.2016, 15:18
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Логика это когда есть консеквент и антецедент, если бухгалтер, то бухгалтерские документы, а в выражении если бухгалтер, то Block1 никакой логики нет вообще. Это можно как угодно в скрипте связать, а эти связи НЕ образуют никакой логики, то есть ее не существует на странице.
Ответить с цитированием
  #16 (permalink)  
Старый 08.07.2016, 15:25
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от MadMaxZZZ Посмотреть сообщение
Видимо придется так и сделать, раз тут таких нет.
Ага, щаз все сбежались чинить чудовищный хтмл для халявщика. )))

Надо нарисовать модели, то есть дерево связей. Когда есть связи определенные моделью, вот тогда и появляется логика.

Бухгатерские документы
+ Половой акт
+ Авансовый отчет
+ Налоговая декларация

В машинно-читаемом виде пользуются xml или наша братия - json. Например

var docs={
  buh:{
      title: Бухгатерские документы
      tip: Выберите тип документа
      options:{
         a:Половой акт,
         b:Авансовый отчет,
         c:Налоговая декларация
       },
   },
   any{
    /* по той же схеме */
   }

};


Теперь имея такую даже самую скромную модель, можно отрендерить по ней какие угодно интерфейсы в которых заложенная в модель "логика" сохранится железобетонно.
Ответить с цитированием
  #17 (permalink)  
Старый 08.07.2016, 15:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

MadMaxZZZ,
чтобы не писать лишнего в коде, то есть "если равно 1, то 1 показать, 2 - 5 скрыть, если равно 2, то показать 2, срыть 1, 3-5, и т.д." можно и нужно в таком случае использовать код мной показанный - имя блока = постоянное значение + значение опции. Но по вашему примеру первый содержит 7 опций, последняя со значением 6, а блоков "открываемых" всего 5.

Я эту опции убрал из списка, ибо я понятия не имею какая там у вас логика заложена в скрипт. Было заявлено, что выбор этих списков определяет "свою" форму, но тогда вопрос - где формы? Если конечные списки также определяют форму, то почему "как вывести Block5 при выборе, допустим "Акт" или "Выполнение работ"", каким образом в блоке 5 появится для каждого выбора своя форма?

Если "Акт" или "Выполнение работ" также форму также в блоке 5, то связать нужно и их опции с блоком 5. Это можно сделать. Но если и все остальные опции конечных списков открывают форму в последнем блоке, а у каждого она своя, где-то и как-то определенная, а значения "а, b, c" с ними связано, значит нужен общий обработчик для этих списков, который и выбирает и показывает форму в блоке 5, и последнее не требует при этом никаких if.
Ответить с цитированием
  #18 (permalink)  
Старый 08.07.2016, 15:35
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Потому что можно дальше продолжать:

var docs={
  buh:{
      title: Бухгатерские документы
      tip: Выберите тип документа
      options:{
         a:form{
              title:Половой акт,
              fields:{
                  name:Введите
                  occu: выведите
                  loca: заведите
              },
         /* по той же схеме */
         b:Авансовый отчет,
         c:Налоговая декларация
       },
   },
   any{
    /* по той же схеме */
   }

};


И когда хотя бы одна форма нормально описана, структура тупо вопроизводится копипастой и правкой для всех остальных самоподобных структур.

Когда скриптопизец начинает кодить с рендера, с хтмля, он заведомо себя обрекает на вечный кактус в заднице. Потому что простота и легкость вначале, гарантирует сложность и тягость даже не в конце, а чуть дальше начала. Зато кажущиеся сложными и трудными методы в начале, освобождают рабочих и крестьян для досуга.
Ответить с цитированием
  #19 (permalink)  
Старый 08.07.2016, 15:37
Интересующийся
Отправить личное сообщение для MadMaxZZZ Посмотреть профиль Найти все сообщения от MadMaxZZZ
 
Регистрация: 07.07.2016
Сообщений: 11

Сообщение от laimas Посмотреть сообщение
MadMaxZZZ,
чтобы не писать лишнего в коде, то есть "если равно 1, то 1 показать, 2 - 5 скрыть, если равно 2, то показать 2, срыть 1, 3-5, и т.д." можно и нужно в таком случае использовать код мной показанный - имя блока = постоянное значение + значение опции. Но по вашему примеру первый содержит 7 опций, последняя со значением 6, а блоков "открываемых" всего 5.

Я эту опции убрал из списка, ибо я понятия не имею какая там у вас логика заложена в скрипт. Было заявлено, что выбор этих списков определяет "свою" форму, но тогда вопрос - где формы? Если конечные списки также определяют форму, то почему "как вывести Block5 при выборе, допустим "Акт" или "Выполнение работ"", каким образом в блоке 5 появится для каждого выбора своя форма?

Если "Акт" или "Выполнение работ" также форму также в блоке 5, то связать нужно и их опции с блоком 5. Это можно сделать. Но если и все остальные опции конечных списков открывают форму в последнем блоке, а у каждого она своя, где-то и как-то определенная, а значения "а, b, c" с ними связано, значит нужен общий обработчик для этих списков, который и выбирает и показывает форму в блоке 5, и последнее не требует при этом никаких if.
Мы с Вами, я так думаю, вообще о разных вещах говорим...
Ответить с цитированием
  #20 (permalink)  
Старый 08.07.2016, 15:40
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Цитата:
"если равно 1, то 1 показать, 2 - 5 скрыть, если равно 2, то показать 2, срыть 1, 3-5, и т.д."
Это блин и называется табличный метод, ибо никакой связи между 1 и 2 и 5 и 387 и 96545 и 100500 - нету. Просто мы ставим слева число и справа число и заявляем что так надо. Это называется еще раз - табличный метод, когда вычислять нечего или невозможно вычислить и найти функции и логику и отношения.

Тогда отношения заводятся искусственно, но они именно заводятся ВИЗУАЛЬНО, то есть материально, ощутимо, оценимо в какой-то нормализованной форме, которая отождествляет именно данные, а не их какое-то там представление.

Имея нормальные модели можно рендерить эти дебильные списки и формы как угодно. А когда оно тупо завязано в хмтле и скриптах - это сразу кактус четыре раза в жопу.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меняющейся текст при выборе select ainur777 Общие вопросы Javascript 0 24.10.2014 22:01
Задержка в при выборе меню bserg Элементы интерфейса 1 16.12.2013 11:36
Открытие полей формы при выборе определенного radio gvelisperi Internet Explorer 1 15.12.2013 03:30
Дезактивация пункта выпадающего списка ANALGIN Элементы интерфейса 2 28.11.2013 15:01
раскрывать/скрывать <td> при выборе определенного элемента списка zip Элементы интерфейса 2 19.01.2009 13:58