JavaScript и имена arr[somevar]

nut

Новичок
JavaScript и имена arr[somevar]

Привет всем!
Как заэкранировать символы [ и ] для Javascript?

Код:

function getSelectedValue( frmName, srcListName ) {
var form = eval( 'document.' + frmName );
var srcList = eval( 'form.' + srcListName );

i = srcList.selectedIndex;
if (i != null && i > -1) {
return srcList.options.value;
} else {
return null;
}
}

Вызов функции:
alert(getSelectedValue( 'adminForm', 'upd\[cat\]' ));

Если в имени пишу не upd[cat], а например upd_cat, то все работает нормально.
Этот вопрос уже давненько мучает помогите плз!

Советы типа ну и используй тогда upd_cat просьба не писать.
 

nut

Новичок
пробовал, но пишет элемент не имеет параметров, может не правильно писал? как нужно, если форма называется adminForm, a выпадающий список upd[cat].
 

bkonst

.. хочется странного?...
Что значит "называется"? У них "id" есть, по которому их выбрать можно?
 

nut

Новичок
id и name = adminForm

-~{}~ 15.06.06 11:33:

id и name = adminForm [/QUOTE]
для формы, ну и соответственно для selecta id и name = upd[cat]
 

bkonst

.. хочется странного?...
Если так, то document.getElementById('adminForm'). Можно проверить, дать alert(document.getElementById('adminForm')).
 

kruglov

Новичок
Ну что за люди, не знают, а советуют...

document[frmName]['upd[cat]'].selectedIndex
 

bkonst

.. хочется странного?...
kruglov
Хе. Обязательно полностью код писать?
Проблема - в eval. Его можно заменить getDocumentById, если хочется соответствия стандартам. Если не хочется - можно так, как написал ты.

~

Вообще, заменить adminForm на другой идентификатор при вызове getDocumentById - нетривиальная вещь, понятно.
 

SelenIT

IT-лунатик :)
Вообще-то eval и getDocumentById - существенно разные вещи. И у каждого из них свои ограничения применимости.
 

bkonst

.. хочется странного?...
SelenIT
Разумеется. В данном случае eval использовался для эмуляции фнукциональности, предоставляемой getDocumentById, как это легко можно заметить.
 

kruglov

Новичок
bkonst
Для использования getElementById надо еще атрибут id ввести. Зачем-то.
 

SelenIT

IT-лунатик :)
bkonst
Использовать getDocumentById для форм и их элементов едва ли намного рациональнее, чем делать это через eval...
 

bkonst

.. хочется странного?...
1) как было сказано вопрошающим ранее, атрибут id уже был
2) с eval есть проблемы. С getElementById их нет.
3) getElementById соответствует спецификации DOM Level 1 в отличие от приведенного выше варианта.
4) Атрибут 'name' у форм в XHTML является Deprecated

Моя позиция ясна?

AdminGorkyRu
Можно привести кусочек этого стандарта? Что-то я не припомню в DOM такой возможности.
 

asm

Пофигист
bkonst
спецом для любителей стандартов:

document.forms[0].elements['upd[cat]'].selectedIndex
 

bkonst

.. хочется странного?...
Угу. Теперь сравниваем с
document.getElementById('upd[cat]').selectedIndex
(Саркастично) Разница в рациональности разительна, не правда ли?

(Если быть педантом, то 'upd[cat]' не является корректным id)

Но мне понравились комментарии типа:
Ну что за люди, не знают, а советуют...
Использовать getDocumentById для форм и их элементов едва ли намного рациональнее, чем делать это через eval...
 

kruglov

Новичок
bkonst
У вас 2 формы с одинаково названными полями. Ваши действия? Вручную раздадите им разные id?
 

vasa_c

Новичок
>Если быть педантом, то 'upd[cat]' не является корректным id/name
Почему?
 
Сверху