| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Выбор option в select по value |
| Автор: maxipub 29.5.2013, 10:51 |
| Добрый день, уважаемые! Есть вариант как сделать сабж, иначе неж перебирать все option в select, пока не найдем нужный value? На чистом JavaScript. up если что, под выбором подразумивается selected="selected" |
| Автор: Arantir 29.5.2013, 14:01 | ||
| JavaScript предоставляет отличную http://ru.wikipedia.org/wiki/Document_Object_Model. Все опции содержаться в поле options объекта поля select.
Просто пользуйтесь описание DOM-объектов, чтобы узнать их полезные поля и методы: http://www.w3schools.com/jsref/dom_obj_select.asp |
| Автор: Amphiluke 29.5.2013, 17:08 | ||||
Конечно же, ответ — document.querySelector() ![]()
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51a5b36d6ccc196e1e000003#findElement_E7045_51a60bc66ccc19574f001593_0 |
| Автор: Arantir 29.5.2013, 17:29 |
Только вот он медленный до ужаса. http://jsperf.com/find-selected-option querySelector как раз это и сделает, причем прихватит еще и кучу остальных элементов, у которых будет проверять параметры селектора. Коллекции в JS хранятся в виде хэш-таблиц. Так что выбирать напрямую из коллекции id-шных элементов, а потом из options, — самый быстрый способ. Для готовых конструкций, вроде тега select, лучше пользоваться стандартными и быстрыми возможностями. querySelector полезен, когда его нельзя заменить ничем, кроме такого же "ручного" перебора элементов. |
| Автор: Amphiluke 29.5.2013, 17:50 | ||
Ну если это дело не гонять в затяжных циклах, то это не аргумент против данного метода. А вообще тест, который вы привели, не совсем соответствует постановке задачи ТС. На самом деле, можно вполне оптимизировать код, использующий querySelector. Во первых, при возможности кэшировать результат, не повторяя поиск на каждой итерации. Во-вторых, область поиска по селектору не обязательно весь документ: элементы также реализуют этот метод для поиска в пределах своего контекста. Вот тест для постановки задачи данного топика: http://jsperf.com/find-option-by-value. Тут метод оказывается, вроде, не настолько «медленный до ужаса». Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51a5b36d6ccc196e1e000003#findElement_E7045_51a615c26ccc197d7c000091_0 |
| Автор: Amphiluke 29.5.2013, 18:03 |
Что за странность. Смотрел этот топик на http://ru.vingrad.com/Выбор-option-в-select-по-value-id51a5b36d6ccc196e1e000003 там этой поправки нет. Добавлено через 5 минут и 12 секунд Ну, коли так, и надо искать выбранный option, тогда да, querySelector — излишество… |
| Автор: Arantir 29.5.2013, 18:18 | ||
Грустно, что из-за такого иногда возникает непонимание между людьми... Странность еще та. Админы вроде-бы говорили, что база данных общая. Такие динамичные страницы, как темы, кешироваться не должны. В своих постах на новом движке изменения я вижу, хоть и делал их со старого движка. Может быть там понятие первого поста немного другое (например, это поле в таблице самой темы) и реадктирование, соотвтственно, тоже не такое как на старом. |
| Автор: maxipub 30.5.2013, 11:55 |
| Круто! Добавлено через 2 минуты и 50 секунд Смотрю моя правка некоторых сбила. Подразумивается присвоение selected="selected". Все ок. |