>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >выделение элементов в listbox скриптом http://forum.mozilla-russia.org/viewtopic.php?id=15659 |
foxthrot > 21-02-2007 16:21:42 |
Добрый день. Есть такая проблема: в диалоговом окне есть листбокс мультиселектовый. Я его динамически заполняю посредством appendItem(), после этого через addItemToSelection() выбираю некоторые элементы. Список длинный, со скроллом и проблема в том, что элементы, видимые (на первой "странице") - визуально выделяются (подсвечиваются), все элементы, которых изначально не видно - визуально не выделяются и при клике на них элемент не подсвечивается как выделенный, хотя внутренне они выделяются/снимается выделение. Поведение элемента весьма странное, у кого-нибудь есть идеи в чем тут дело? |
Anton > 23-02-2007 15:04:09 |
нет такой идеи, есть идея по workaround: выделять элементы списка посредством item. setAttribute ("selected", "true") |
foxthrot > 23-02-2007 15:38:43 |
Anton пишет
Я пробовал ручками создавать menuitem, делать ему selected = true, после этого эти элементы были таки выбраны, но selection с них не снимался |
Anton > 23-02-2007 17:20:31 |
А если вызывать перед addItemToSelection метод ensureElementIsVisible ? Вроде работает. |
foxthrot > 30-03-2007 13:55:14 |
Спасибо, стало лучше. Но не во всех случаях такая комбинация срабатывает, то есть периодически появляются вот такие не выделенные визуально элементы. Пока не могу уловить закономерность. |
Codeblight > 13-10-2007 17:23:29 |
У меня аналогичная проблема Решения пока не нашли ? |
foxthrot > 13-10-2007 17:27:10 |
Codeblight пишет
В данном случае, я выкрутился с помощью type="checkbox" у menuitem. |
Codeblight > 13-10-2007 18:20:37 |
foxthrot пишет
Мне к сожалению такой вариант не подойдет, т.к. надо обычный листбокс не мультиселектовый. Пробовал выделять вручную элементы атрибутом selected - "заглохшие" не выделяются. |
Codeblight > 13-10-2007 20:27:46 |
Зря я кстати панику поднял если выделять так, то все работает Выделить код Код:var my_list = document.getElementById('my_search_select'); var items = my_list.getElementsByTagName('listitem'); for (var i = 0; i < items.length; i++) { if (items[i].getAttribute('value') == my_id) { my_list.scrollToIndex(i); my_list.selectItem(my_list.getItemAtIndex(i)); break; } } Причем если написать items[i].value - то браузер ругается на запредельный индекс и еще чего-то там хотя если 2 раза сделать одно и то же - то начинает тоже работать ;0) |
foxthrot > 13-10-2007 21:52:46 |
Codeblight пишет
эээээ, если не мультиселектовый листбокс, то достаточно листбоксу в value записать искомое значение, а он сам выберет нужный элемент |
Codeblight > 13-10-2007 23:57:13 |
Ну да, так я и делал... элемент для FF выбран, но не подсвечен (и не подсвечивается больше хоть закликайся). Проскрул для него до селекшина ничего не дает. Мой способ описанный выше глючит меньше но точно так же глючит (закономерности не нашел). |