|
|
|
| Здравствуйте.
Проблема:
есть массив из справочника:
id
full_reason
small_reason
id_category
из этого массива (индексы не по порядку) создается <select>-элемент, где value - индекс из базы, текст в <option> - small_reason.
Надо, чтобы при выборе какого либо элемента в текстовое поле вносился full_reason, с соответствующим индексом. Я это реализовал с помощью скрытого еще одного <select>, в котором находятся full_reason с тем же порядком value-индексов. Но вот по такой конструкции:
document.getElementById('text_input').value = document.getElementById('full_reason_select').options[value_current].text;
|
value_current - передаваемый параметр, выбранного small_reason_select элемента;
в текстовое поле вносится ПОРЯДКОВЫЙ элемент из второго <select>, а не соответствующий value_current.
Как поменять, чтобы вносилось в соответствии с value, а не с порядковым номером?
Спасибо. | |
|
|
|
|
|
|
|
для: holst
(10.04.2009 в 11:19)
| | Очень туманно вы описали вашу задачу.
Потому единственное, что могу посоветовать, это:
замените options[value_current].text;
на options[value_current].value;
|
Но вообще-то, конечно, использовать скрытый селект только для хранения данных - это полный бред.
Неужто не в курсе, что в JS имеются хеш-массивы?
Например, для данных некоего опроса:
сигареты --> Винстон
напиток --> водка
закуска --> соленые огурцы
болею за --> динамо
| вполне можно создать хеш-массив. Причём несколькими способами. Например, так:
var Hash_Array = {'сигареты':'Винстон', 'напиток':'водка', 'закуска':'соленые огурцы', 'болею за':'динамо'}
| Соответственно, вызов Hash_Array ['закуска'] вернёт вам 'соленые огурцы'. | |
|
|
|
|
|
|
|
для: PAT
(10.04.2009 в 11:31)
| | вносить надо текст а не индекс.... представьте, что вместо второго индекса хеш-массив...
тогда подскажите, как обратиться к какому либо массиву на сртанице.
Он, напрмер, определяется в каком то теге <script> в начале страницы.
Когда я пытаюст вписать
onchange="javascript:alert(text_array['1']);"
| - пишет, что определение text_array отсутствует. | |
|
|
|
|
|
|
|
для: HoLsT
(10.04.2009 в 12:58)
| | Повторюсь, что вас понять ОЧЕНЬ трудно.
Я вынужден всякий раз идти на кухню, готовить себе чашку кофе, выпивать его, а потом на остатках кофейной гущи гадать.
Вот вы написали: "вносить надо текст а не индекс"
А я разве где-то употреблял индексы?
Что, слово 'закуска' - это не текст?
Или фраза 'соленые огурцы' - это тоже не текст?
Условно говоря, хеш-массив потому и называется хешем, что в нём ВМЕСТО индексов используются строки.
Ваша инструкция onchange срабатывает всякий раз, когда в селекте происходит изменение selectIndex'a.
Да, selectIndex - это ЧИСЛОВОЙ ИНДЕКС.
Но ведь, зная этот новый числовой индекс, вы сразу можете работать с ДВУМЯ строками - со значением value выбранного опшена, и со значением text этого же опшена. И именно эти строки использовать для обращения к элементу хеш-массива.
>"представьте, что вместо второго индекса хеш-массив"
А чего тут представлять-то?
Массивы в Javscripte могут быть любой размерности.
Т.е. фактически массивы бывают только одномерные.
Но каждый элемент массива может также быть массивом, а его элементы - тоже массивами...
и так хоть до бесконечности - лишь бы сами не запутались :-)
>"как обратиться к какому либо массиву на сртанице"
Если массив ГЛОБАЛЬНЫЙ, т.е. определён ВНЕ функции в ПЕРВОМ скритовом блоке, то обратиться к нему (или к любому элементу его) можно из любого места страницы - из этого же или из любого следующего скриптового блока, или из любой инструкции события типа ON-чего-то (onload, onchange, onmouseover и т.д. - из ЛЮБОЙ) | |
|
|
|