Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор option в select по value 
V
    Опции темы
maxipub
  Дата 29.5.2013, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Добрый день, уважаемые!

Есть вариант как сделать сабж, иначе неж перебирать все option в select, пока не найдем нужный value?

На чистом JavaScript. smile 

up
если что, под выбором подразумивается selected="selected" smile

Это сообщение отредактировал(а) maxipub - 29.5.2013, 11:24
PM MAIL   Вверх
Arantir
Дата 29.5.2013, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 5
Всего: 55



JavaScript предоставляет отличную DOM.
Все опции содержаться в поле options объекта поля select.
Код

var select = document.getElementById('my_select');
var currentOption = select.options[select.selectedIndex];

Просто пользуйтесь описание DOM-объектов, чтобы узнать их полезные поля и методы: http://www.w3schools.com/jsref/dom_obj_select.asp


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Amphiluke
Дата 29.5.2013, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата

  Выбор option в select по value ... На чистом JavaScript
  

Конечно же, ответ — document.querySelector() smile
Код

option = document.querySelector("#my_select option[value='value_attribute']")


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM   Вверх
Arantir
Дата 29.5.2013, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 5
Всего: 55



Цитата(Amphiluke @  29.5.2013,  16:08 Найти цитируемый пост)
Конечно же

Только вот он медленный до ужаса. http://jsperf.com/find-selected-option

Цитата(maxipub @  29.5.2013,  09:51 Найти цитируемый пост)
 иначе неж перебирать все option в select

querySelector как раз это и сделает, причем прихватит еще и кучу остальных элементов, у которых будет проверять параметры селектора.

Коллекции в JS хранятся в виде хэш-таблиц. Так что выбирать напрямую из коллекции id-шных элементов, а потом из options, — самый быстрый способ. Для готовых конструкций, вроде тега select, лучше пользоваться стандартными и быстрыми возможностями.

querySelector полезен, когда его нельзя заменить ничем, кроме такого же "ручного" перебора элементов.

Это сообщение отредактировал(а) Arantir - 29.5.2013, 17:32


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Amphiluke
Дата 29.5.2013, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата (Arantir)

   Только вот он медленный до ужаса. http://jsperf.com/find-selected-option
   

Ну если это дело не гонять в затяжных циклах, то это не аргумент против данного метода. А вообще тест, который вы привели, не совсем соответствует постановке задачи ТС. На самом деле, можно вполне оптимизировать код, использующий querySelector. Во первых, при возможности кэшировать результат, не повторяя поиск на каждой итерации. Во-вторых, область поиска по селектору не обязательно весь документ: элементы также реализуют этот метод для поиска в пределах своего контекста.
Вот тест для постановки задачи данного топика: http://jsperf.com/find-option-by-value. Тут метод оказывается, вроде, не настолько «медленный до ужаса».

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM   Вверх
Arantir
Дата 29.5.2013, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 5
Всего: 55



Цитата(Amphiluke @  29.5.2013,  16:50 Найти цитируемый пост)
А вообще тест, который вы привели, не совсем соответствует постановке задачи ТС.

Я руководствовался словами ТС.
Цитата(maxipub @  29.5.2013,  09:51 Найти цитируемый пост)
up
если что, под выбором подразумивается selected="selected" 

Наверное, он был не в курсе про select.options и select.selectedIndex, и хотел делать это через непосредственный select.value.

Это сообщение отредактировал(а) Arantir - 29.5.2013, 18:02


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Amphiluke
Дата 29.5.2013, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(maxipub @  29.5.2013,  14:51 Найти цитируемый пост)
upесли что, под выбором подразумивается selected="selected"

Что за странность. Смотрел этот топик на новом двиге там этой поправки нет. smile

Добавлено через 5 минут и 12 секунд
Ну, коли так, и надо искать выбранный option, тогда да, querySelector — излишество…
PM   Вверх
Arantir
Дата 29.5.2013, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 5
Всего: 55



Цитата(Amphiluke @  29.5.2013,  17:03 Найти цитируемый пост)
Что за странность. Смотрел этот топик на новом двиге там этой поправки нет. 

Грустно, что из-за такого иногда возникает непонимание между людьми...
Странность еще та. Админы вроде-бы говорили, что база данных общая. Такие динамичные страницы, как темы, кешироваться не должны. 
В своих постах на новом движке изменения я вижу, хоть и делал их со старого движка.
Может быть там понятие первого поста немного другое (например, это поле в таблице самой темы) и реадктирование, соотвтственно, тоже не такое как на старом.

Это сообщение отредактировал(а) Arantir - 29.5.2013, 18:18


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
maxipub
Дата 30.5.2013, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Круто! smile Всем спасибо, querySelector рулит! smile

Добавлено через 2 минуты и 50 секунд
Цитата(maxipub @  29.5.2013,  10:51 Найти цитируемый пост)
если что, под выбором подразумивается selected="selected"

Смотрю моя правка некоторых сбила. Подразумивается присвоение selected="selected". Все ок.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.