08.07.2016, 07:13
|
Интересующийся
|
|
Регистрация: 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, но скрипт к нему не обращается..
|
|
08.07.2016, 14:40
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Цитата:
|
при выборе "Бухгалтерского документа" показывать див с id=Block1
|
И где тут логика? Никакого отношения Block1 к бухгалтерии не имеет, это чистая абстракция, связывать которую придется прямо в хтмле. Советую не мучиться, а отдать это все сделать знающим людям.
|
|
08.07.2016, 14:43
|
Интересующийся
|
|
Регистрация: 07.07.2016
Сообщений: 11
|
|
Сообщение от warren buffet
|
И где тут логика? Никакого отношения Block1 к бухгалтерии не имеет, это чистая абстракция, связывать которую придется прямо в хтмле. Советую не мучиться, а отдать это все сделать знающим людям.
|
Что значит нет логики? При выборе "бухгалтерский документ" (label==1) вываливается div Block1 с пунктами ...все же в скрипте написано.
|
|
08.07.2016, 14:44
|
Интересующийся
|
|
Регистрация: 07.07.2016
Сообщений: 11
|
|
Сообщение от warren buffet
|
Советую не мучиться, а отдать это все сделать знающим людям.
|
Видимо придется так и сделать, раз тут таких нет.
|
|
08.07.2016, 15:18
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Логика это когда есть консеквент и антецедент, если бухгалтер, то бухгалтерские документы, а в выражении если бухгалтер, то Block1 никакой логики нет вообще. Это можно как угодно в скрипте связать, а эти связи НЕ образуют никакой логики, то есть ее не существует на странице.
|
|
08.07.2016, 15:25
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Сообщение от MadMaxZZZ
|
Видимо придется так и сделать, раз тут таких нет.
|
Ага, щаз все сбежались чинить чудовищный хтмл для халявщика. )))
Надо нарисовать модели, то есть дерево связей. Когда есть связи определенные моделью, вот тогда и появляется логика.
Бухгатерские документы
+ Половой акт
+ Авансовый отчет
+ Налоговая декларация
В машинно-читаемом виде пользуются xml или наша братия - json. Например
var docs={
buh:{
title: Бухгатерские документы
tip: Выберите тип документа
options:{
a:Половой акт,
b:Авансовый отчет,
c:Налоговая декларация
},
},
any{
/* по той же схеме */
}
};
Теперь имея такую даже самую скромную модель, можно отрендерить по ней какие угодно интерфейсы в которых заложенная в модель "логика" сохранится железобетонно.
|
|
08.07.2016, 15:27
|
Профессор
|
|
Регистрация: 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.
|
|
08.07.2016, 15:35
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Потому что можно дальше продолжать:
var docs={
buh:{
title: Бухгатерские документы
tip: Выберите тип документа
options:{
a:form{
title:Половой акт,
fields:{
name:Введите
occu: выведите
loca: заведите
},
/* по той же схеме */
b:Авансовый отчет,
c:Налоговая декларация
},
},
any{
/* по той же схеме */
}
};
И когда хотя бы одна форма нормально описана, структура тупо вопроизводится копипастой и правкой для всех остальных самоподобных структур.
Когда скриптопизец начинает кодить с рендера, с хтмля, он заведомо себя обрекает на вечный кактус в заднице. Потому что простота и легкость вначале, гарантирует сложность и тягость даже не в конце, а чуть дальше начала. Зато кажущиеся сложными и трудными методы в начале, освобождают рабочих и крестьян для досуга.
|
|
08.07.2016, 15:37
|
Интересующийся
|
|
Регистрация: 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.
|
Мы с Вами, я так думаю, вообще о разных вещах говорим...
|
|
08.07.2016, 15:40
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Цитата:
|
"если равно 1, то 1 показать, 2 - 5 скрыть, если равно 2, то показать 2, срыть 1, 3-5, и т.д."
|
Это блин и называется табличный метод, ибо никакой связи между 1 и 2 и 5 и 387 и 96545 и 100500 - нету. Просто мы ставим слева число и справа число и заявляем что так надо. Это называется еще раз - табличный метод, когда вычислять нечего или невозможно вычислить и найти функции и логику и отношения.
Тогда отношения заводятся искусственно, но они именно заводятся ВИЗУАЛЬНО, то есть материально, ощутимо, оценимо в какой-то нормализованной форме, которая отождествляет именно данные, а не их какое-то там представление.
Имея нормальные модели можно рендерить эти дебильные списки и формы как угодно. А когда оно тупо завязано в хмтле и скриптах - это сразу кактус четыре раза в жопу.
|
|
|
|