![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
99rus |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
Уважаемые комрады!
Можно ли сократить такую запись: Я не знаю точно (нет, знаю конечно) какой элемент будет скрываться, а какой отображаться и будет это производиться в разных ключах и в каждом из них по разному, например:
И таких вот уровней и под уровней довольно много, то есть неизвестное количество... В этой ситуации можно как-то сократить? З.Ы. ключи: test, bla и pre приходят из value. Я просто немного переделал под свои нужды этот код:
|
||||
|
|||||
InvalidProperty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: нет Всего: 9 |
да легко:
исправлял верхний код. нижний даже не смотрел -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
99rus |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
А не могли бы прокомментировать что делает ваш код? Я так понимаю: onChange=document.getElementById("sel1").style.display = (val == "test" ? "block" : "none"); для ключа "test" с id="sel1" будет значение "block", а для всех остальных "sel..." будет "none", так? И еще, куда вписывать эту конструкцию? В switch (val) {...}? Это сообщение отредактировал(а) 99rus - 25.8.2009, 13:31 |
||||
|
|||||
InvalidProperty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: нет Всего: 9 |
первая строчка: sel1 примет значение "block", только если val = "test", в остальных случаях - "none" вторая строчка: sel2 примет значение "block", только если val = "bla", в остальных случаях - "none" третья строчка: sel3 примет значение "block", только если val = "pre", в остальных случаях - "none" четвертая строчка (это свичевый default): se4 примет значение "block", только если val != "test" и "bla" и "pre", иначе - "none" операция " ? : " - единственная тринарная операция, которая работает не с парой значений, а с тремя, т.о. что если условие, стоящее перед знаком вопроса истинно, то выполняется блок между вопросом и двоеточием, если же условие ложно - блок после двоеточия. Тебе не нужно использовать switch в данном случае. Твой первый самый код полностью идентичен по результату выполнения моим четырем строчкам без каких-либо дополнений и изменений. Это сообщение отредактировал(а) InvalidProperty - 25.8.2009, 13:42 -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
Либо я вас не понимаю, либо вы меня...
Если не сложно будет вам проверить как все это работает в действии, то я выкладываю сюда полный код всего (он ооочень большой): Код html:
|
|||
|
||||
InvalidProperty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: нет Всего: 9 |
и что я должен проверить? вопрос был:
ответ был: можно и был приведен пример. Что непонятно конкретно? -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
Непонятно вот что: case 'test': onChange=document.getElementById("sel1").style.display = "block"; case 'test': onChange=document.getElementById("sel2").style.display = "none"; Для "test" ("sel1") будет блок при вашей записи: onChange=document.getElementById("sel1").style.display = (val == "test" ? "block" : "none"); А для всех остальных "test" ("sel...") будет ноне при такой же записи: onChange=document.getElementById("sel1").style.display = (val == "test" ? "block" : "none"); ? Так? Или я что то путаю... |
|||
|
||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
Прикрепляю сам js файл в архиве.
Html разметка выше. Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
EmilRegis |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.9.2007 Репутация: 3 Всего: 4 |
Вопрос правильно задайте...
конструкция a = (условие)?c:d означает,что a присваивается c при выполнении условия и d при не выполнении условия... InvalidProperty вам и переписал ваш код как вы просили,то есть гораздо короче... именно так |
|||
|
||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
InvalidProperty
Спасибо вам огромное за помощь, но ваш пример не совсем так работает как надо, то есть он работает, все гуд, но немного не так... если смотреть html, то там такая структура: 1) Изначально показан первый select и <DIV class=list id="sel9"> 2) Первый select, в нем выбрал option (любой) --> показал второй select под ним. (при этом <DIV class=list id="sel9"> скрыт) 3) Второй select, в нем выбрал option (любой) --> показал контейнер <p> с содержимым, но сам второй select скрывается. (при этом <DIV class=list id="sel9"> скрыт) В вашем коде получается в принципе все верно, за исключением того что выделено красным в моем описании но сам второй select скрывается, вот он как раз зараза скрывается при выборе во втором selecte любого option, а должен быть виден. Вот что на выходе получилось:
Это сообщение отредактировал(а) 99rus - 26.8.2009, 09:53 |
|||
|
||||
InvalidProperty |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: нет Всего: 9 |
это не мой пример работает не совсем так, как нужно. Я показал, как можно сократить запись, я не брался в твой пример жизнь вдыхать. Еще раз внимательно прочитай то, что сам же в своем коде написал:
этот код будет обработан нормально. Следующий код будет обработан тоже нормально, но тебе это не нравится:
еще не догадываешься в чем у тебя ошибка? ты вызываешь функцию filter с аргументом this. В самой функцие val принимает значение объекта аргумента. Т.о. в первом случае ты берешь значение первого селекта, а во втором - второго, хотя второй селект у тебя в жизни никогда не примет значение "А4 (ЛМ)". Надеюсь, пищу для размышлений дал... Исправляй. Если совсем лень думать, то для данного случая нужно написать следующим образом:
этот код сокращай сам ![]() Это сообщение отредактировал(а) InvalidProperty - 26.8.2009, 10:49 -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
||||||
|
|||||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
Спасибо дружище, за понимание и проявленное терпение, буду думать дальше!
![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
99rus, посмотрел код. Там в принципе всё сделано неправильно. Я переработал пример, он правда при выборе принтера выводит на экран значение атрибута value выбранного принтера, но это уже сам переделаешь как надо
![]()
Это код вместе со скриптом ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
99rus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.8.2009 Репутация: нет Всего: нет |
diadiavova
Спасибо за труд и уделенное внимание, но этот пример к данной задаче не подходит. Задача заключалась в следующе: 1) Изначально показывается один селект с типами и форматами принтеров (Лазерные монохромные формата А4 "ЛМ А4" к примеру и т.д...) и еще внизу показывается блок с картинкой и текстом (постоянный контент, типа рекламы), при клике на ссылку в этом блоке, он еще раскрывается, т.е. показывается доп. инфа. 2) При выборе типа принтера "ЛМ А4", под этим селектом показывается еще доп. селект со списком марок принтеров "HP LaserJet P1005 (CB410A)". 3) При выборе марки принтера "HP LaserJet P1005 (CB410A)", под этим селектом показывается блок с картриджем который к нему подходит, при этом все селекты вверху остаются без изменений, что бы человек видел что он выбрал (это как обратная навигация навигация "хлебные крошки", пользователь видит где он находится и откуда пришел.). Да, при выборе пункта 2) и 3) "селекты", блок с дополнительной инфой "типа реклама" не должен отображаться. З.Ы. так что как видите не так уж все просто. |
|||
|
||||
InvalidProperty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: нет Всего: 9 |
99rus, есть в словах diadiavova стоящая мысль, не отвергай ее.
Ежели проблема решена - поставь галочку, иначе давай обсуждать дальше -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |