Sserg-135
User-
Posts
146 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Sserg-135
-
Не получается получить значение опции динамически заполняемого списка select
Sserg-135 replied to Sserg-135's question in JavaScript
суть в том, что у меня не получается определить значение (опцию) динамически наполняемого селекта к моменту (или во время) загрузки страницы. Т.е. скрипты, которые исполняются во время загрузки страницы не могут еще получить состояние селекта ( т.е. он для них еще стоит на нулевой опции). Но визуально , когда страница уже отображается браузером, то я вижу что селект стоит на выбранной ("правильной" ) опции. Получается что когда происходит событие готовности документа, то селект просто существует, но не установлен на нужную опцию. Хотя функция которая заполняет селект и устанавливает его на нужную опцию по идее уже отработала ( я ее вызываю перед тем как считывать состояние селекта) -
Не получается получить значение опции динамически заполняемого списка select
Sserg-135 replied to Sserg-135's question in JavaScript
В смысле при помощи change устанавливать на нужную опцию? а так разве можно? -
Бьюсь несколько дней не могу понять: Есть скрипт на JS которым наполняю список <select> при загрузке страницы document.getElementById(Id).options[num_option]=new Option(result[i]['Model'],result[i]['code_model'],false,false);где result это массив который заполняется из Mysql с помощью AJAX Далее через Jquery выбираю опцию которую делаю выбранной: $("#"+Id+" :contains("+model+")").attr("selected", "selected");$("#"+Id+" :contains("+model+")").prop("selected", true);Где model это переменная с текстовым значением выбранной опции ( Хотя это не принципиально т.к. при выборе установки по значению value все то-же самое о чем пойдет речь ниже). Так вот суть трабла: мне нужно узнать значение выбранной опции списка и передать его в функцию которая исполняется после установки данного селекта: document.getElementById('Id').value – мне всегда возвращает значение первой опции как и $('#Id’ option:selected').val(), хотя сам список благополучно заполняется и стоит на правильно выбранной опции. Причем если я перед этим напишу alert(‘xxx’), т.е. alert(‘xxx’); document.getElementById('Id').value то получаю правильное значение выбранной опции. Такое впечатление что нет готовности установки селекта. Хотя если подобный список сформировать например силами PHP т.е. не динамически то все опции определяются правильно. Для чего мне это нужно – чтобы установить взаимосвязанные списки на значение полученное из переменной URL. Я конечно могу передать в ту функцию значение непосредственно из URL, НО: 1) хочется разобраться что за хрень : ))) и 2) для установки цепочки взаимосвязанных селектов и событий, красивее и удобнее в программировании использовать обращение через значения самих селектов. Кстати попытки дождаться готовности событий типа $(document).ready(function () {document.getElementById('Id').valueИ здесь считывать значения селектов});$(windows).load(function () {document.getElementById('Id').valueИ здесь считывать значения селектов});Приводят к тому-же результату- т.е селект как-бы «все еще на первой опции» Вот собственно ) Что я делаю неправильно? Помогите пожалуйста
-
вот где-то так http://jsfiddle.net/xLUt7/
-
- именно это и не пойму, в стилях же прописано свойство, как-же тогда к нему обратиться, чтобы в тэге не прописывать?
-
Потому что block.style.display изначально - пустая строка. block.style - это то, что назначено непосредственно через атрибут style элемента. Поглядите в DOM-инспекторе, там это прекрасно видно. Не совсем понятно почему так выходит. Т.е в данном случае свойство display нужно прописывать непосредственно в тэге <div style='display: none;'> ?
-
Такой способ имеет право на жизнь? (код и идея слоя взяты из примеров с этого сайта)http://jsfiddle.net/sjC8A/Или не комильфо? Правда почему-то при загрузке с первого клика не работает...
-
Спасибо за наводки, оказалось не так просто) Хотя и пример со слоем по центру в принципе можно заставить работать
-
Форумчане, правильно ли я понимаю технологию создания появляющегося слоя в центре странички (например как на этом форуме, когда кликаешь ссылку Регистрация или когда кликаешь на иконки BB кодов при оформлении новой темы ): Шаг1: Где-нибудь в теле HTML странички (в любом месте по сути?) создаем отцентрированный слой по принципу описанному например в http://htmlbook.ru/l...u-veb-stranitsy со свойством display:none и с нужным содержанием Шаг 2: на JS пишем коротенкую функцию, которая при клике на ссылку, по которой нужно открыть этот слой, меняет свойство слоя display:visible и ставит z-index 100000, чтобы слой был поверх всего. Так правильно? или весь слой надо формировать исключительно средствами JS? И как тогда делается эффект затемнения "нижележащих" слоев? через слой с полупрозрачным фоном, через opacity или полупрозрачныу картинку в фоновом рисунке формата png?А эффект небольшой тени только по периметру слоя? Буду рад подсказкам :-) Спасибо
-
"Перемещение" тэга INPUT из одной ячейки таблицы в другую по условию
Sserg-135 replied to Sserg-135's question in JavaScript
одну библиотеку jquery. Без фреймворков можно так http://jsfiddle.net/ERfFR/6/ Огромное спасибо! -
"Перемещение" тэга INPUT из одной ячейки таблицы в другую по условию
Sserg-135 replied to Sserg-135's question in JavaScript
Ого, круто! только честно говоря не хотелось связываться с ней. Надо ведь подключать кучу библиотек? -
"Перемещение" тэга INPUT из одной ячейки таблицы в другую по условию
Sserg-135 posted a question in JavaScript
Помогите правильно написать скрипт, делающий следующее: Мне нужно в зависимости от выбранного из списка select как-бы "перенести" размещение поля ввода input из одной части таблицы в другую (например их одной из нижних ячеек в одну из верхних). Но при этом чтобы имя переменной было одно (так удобнее для дальнейшей записи в БД). Наиболее простой способ вижу таким: создаю два идентичных тэга input в требуемых ячейках c одинаковыми name, но с разным значением свойства display и и затем скриптом меняю, невидимую на block.style.display = ""; видимую на block.style.display = "none"; Вопрос: корректно ли передадуться на сервер значения переменной (формально же их две с одним именем) и вообще корректо-ли так делать? Нужно ли еще добавить смену свойства disable?. Или вообще так не делают? -
Добрый день Помогите с составлением запроса группировки, но с такой особенностью: Есть таблица, которую нужно сгруппировать по значению определенного столбца (с подсчетом кол-ва). Само по себе это понятно просто и вопросов не вызывает т.е. как-то так: SELECT var_1, COUNT(*) AS qlt FROM table_1 LEFT JOIN `table_2` ON table_1.code=`table_2`.CODE GROUP BY table_1.code ORDER BY var_2-- но есть нюанс: нужно чтобы строки со значением code='' (т.е.пустое поле) и со значением code=-1 попали в одну группу и соответственно подсчитались вместе как одна группа. Как можно это составить в одном запросе, если можно конечно. Я пока кроме как сделать дополнительно к основному еще два запроса с условиям по: WHEN table_1.code=-1 или с HAVING table_1.code=-1 , а затем HAVING table_1.code='', а затем объединить итоговые массивы не придумал. Хотелось бы в одном запросе- чтоб красиво было)
-
Great Rash, теперь все сделал: опции добавляю через document.getElementById(Id).options[num_option]=new Option('name','value', false, false); а оптогруппы как в Вашем последнем коде через : document.getElementById(Id).appendChild(group); пока работает и в лисе и в осле и в хроме Еще раз спасибо!
-
Great Rash, спасибо за код, в IE и в Хроме группы появились, но теперь в FF не видны названия самих опций ))
-
помогите пожалуйста, никак не получается
-
пока пришел к выводу, что IE не хочет создавать подряд optgroup-ы через JS, между ними должен находится тэг <option value=nnn >...</option>, причем не созданный через скрипт JS (я его создаю таким кодом: document.getElementById(Id).options[num_option]=new Option('опция N',value,false,false)), а написанный непосредственно в html. такая вот ерунда выходит
-
И опять оказалось не все так просто ) создаю опции Select и оптогруппы в цикле: for (i=0; i<result.length; i++) { . . . // Выделяем признак оптгруппы if (result[i]['code']=='***'){ //** создание optgroup var optgroup = document.createElement('optgroup'); optgroup.label = result[i]['neighborhood']; // тэг label. заголовок оптгруппы try { // IE6(7) document.getElementById(Id).add(optgroup, document.getElementById(Id).options[null]); } catch (e) { document.getElementById(Id).add(optgroup, null); } } } В FF все прекрасно создается, а в IE создается только одна- самая первая optgroup, а которые идут дальше цикле полностью игнорируются. Делаю все тоже самое без цикла (просто ставлю подряд два куска этого кода друг за другом с разными названиями optgroup.label ) и тоже создается только первая оптгруппа, а вторая (т.е. последующие) игнорируется. В чем может быть проблема? И кстати в Гугль-Хроме этот код совсем не работает
-
помог такой код: var sel = document.getElementById(Id); while (sel.childNodes.length) { if (sel.firstChild.tagName == 'OPTGROUP') { while (sel.firstChild.childNodes.length) { sel.firstChild.removeChild(sel.firstChild.firstChild); } } sel.removeChild(sel.firstChild); } полная очистка списка
-
Рано радовался теперь проблема очистить список от оптогрупп ))))) ибо document.getElementById(Id).options.length=0 очищает только элементы списка, но никак не оптогруппы) что нужно для этого сделать?
-
Great Rash, получилось! Огромное Вам спасибо!
-
Получилась-таки оптогруппа, просто т.к. она пока без названия, то FF ее просто не отобразил, а плагин Firebug в коде страницы ее уже показывает. код практически такой-же, как написал Great Rash. var optgroup = document.createElement('optgroup'); try { // IE6(7) document.getElementById(Id).add(optgroup, document.getElementById(Id).options[null]); } catch (e) { document.getElementById(Id).add(optgroup, null); } Спасибо. А вот с названием оптогруппы (тэг LABEL)не совсем понял как установить. (если через setAttribute, то какой будет синтаксис?)? помогите еще чуть-чуть)
-
Такой как написал Great Rash в #5
-
не создалась оптогруппа (
-
Спасибо, попробую сделать так