Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   getElementsByName для form select (https://javascript.ru/forum/events/32436-getelementsbyname-dlya-form-select.html)

apollox 16.10.2012 12:42

getElementsByName для form select
 
Всем ДД, никак не могу нагуглить нужное свойство.

Есть форма типа

<select name='Country'>
<option value='1'>Russia
<option value='2' selected>Kazakhstan
<option value='3'>Ukraina
</select>


document.getElementsByName('Country')[0].value

возвращает 2,
document.getElementsByName('Country')[0].text

возвращает undefined,

А мне нужно получить Kazakhstan - к какому свойству нужно обращаться вместо value и text?

BallsShaped 16.10.2012 13:17

Нужно обращаться к свойству selectedIndex. Оно содержит номер выбранного пункта. Ты же ведь тестовое задание выполняешь? Там нужно делать запросы типа "1.json". Вот ты и получишь:
var url = document.getElementsByName('Country')[0].selectedIndex + 1 + ".json";

apollox 16.10.2012 13:23

Спасибо, но...
При чем здесь .json?
Пример из реального приложения я упростил, чтобы было понятнее.

Nekromancer 16.10.2012 13:31

var select = document.getElementsByName('Country')[0];
select.options[select.selectedIndex].text

BallsShaped 16.10.2012 13:32

Цитата:

Сообщение от apollox
При чем здесь .json?

Не вникай:) Я просто думал, это из одного тестового задания.

apollox 16.10.2012 13:41

Nekromancer,
Спасибо, то что надо!

apollox 16.10.2012 16:27

Еще один вопрос написовался.

Есть набор например дивов
<div class="AAA BBB CCC"">Текст 1</div>
<div class="AAA BBB DDD"">Текст 2</div>
<div class="AAA DDD QQQ"">Текст 3</div>


Мне нужно найти элементы где есть классы AAA BBB, таких в примере 2 штуки

document.getElementsByClassName('AAA BBB').length
- так не работает, нужно видимо как-то регулярное выражение использовать, но не могу понять как (

Если искать все три класса, то работает
document.getElementsByClassName('AAA BBB CCC').length

Nekromancer 16.10.2012 16:28

document.querySelectorAll('.AAA.BBB');

apollox 16.10.2012 16:54

Отлично, спасибо!

apollox 18.10.2012 11:17

Еще один вопрос.

Вот так работает:
className.replace('hide ' + selected_text + ' ACCEPTED','show ' + selected_text + ' ACCEPTED');


Но мне нужно, чтобы работало при любом третьем классе, а не только ACCEPTED.

Вот так не работает:
className.replace('hide ' + selected_text + ' *','show ' + selected_text + ' *');


Как правильно шаблон оформить? Что нужно вместо звездочки написать, чтобы на любое имя третьего класса срабатывало?

lord2kim 18.10.2012 11:31

apollox,
className.replace("hide", "show");

apollox 18.10.2012 11:52

Это понятно )
Мне нужно чтобы срабатывало например
className.replace('hide YES ACCEPTED', 'show YES ACCEPTED);
className.replace('hide YES NOT_ACCEPTED', 'show YES NOT_ACCEPTED);

но чтобы НЕ срабатывало
className.replace('hide NO ACCEPTED', 'show NO ACCEPTED);
className.replace('hide NO NOT_ACCEPTED', 'show NO NOT_ACCEPTED);

То есть срабатывать должно на hide YES и любой третий класс
но НЕ на hide + 'что-то кроме YES' + любой третий класс

Поэтому я хочу понять, как обозначить любой третий класс...

lord2kim 18.10.2012 11:56

apollox, ну а зачем вам 3-ий класс если он любой?
className.replace("hide YES", "show YES");

apollox 18.10.2012 12:10

А, то есть replace среагирует только на два нужных класса, я думал что все классы у элемента смотрит и какой-то шаблон нужен для третьего, теперь понятно.

А если между hide и YES будет еще какой-то класс, типа hide QQQ YES, шаблон сработает или это QQQ нужно как-то обозначать? Ну то есть любой второй класс )
className.replace("hide YES", "show YES");

lord2kim 18.10.2012 12:15

apollox, это уже нужно регулярками...или разбирать строку...
className.indexOf("hide") != -1 && className.indexOf("YES") != -1

apollox 18.10.2012 12:18

Вот, уже ближе к теме ) Можете навскидку кинуть ссылку, где про регулярки для className почитать, чтобы вас тут глупыми вопросами не доставать? )

lord2kim 18.10.2012 12:21

Цитата:

Сообщение от apollox (Сообщение 210966)
Вот, уже ближе к теме ) Можете навскидку кинуть ссылку, где про регулярки для className почитать, чтобы вас тут глупыми вопросами не доставать? )

они для всех строк одинаковые...RegExp


Часовой пояс GMT +3, время: 22:41.