|
|
|
| Добрый день!
есть переменная полученная с JS в виде массива, мне нужно чтобы этим массивом заполнилась Селект формы вида:
<form id="test" name="test_nm" action="">
<select id="test_sel" >
<option value=""></option>
....................
</select>
</form>
|
вот как это сделать? | |
|
|
|
|
|
|
|
для: Silentium
(22.04.2009 в 08:32)
| | см. код функции formSecSel () здесь | |
|
|
|
|
|
|
|
для: PAT
(22.04.2009 в 08:39)
| | честно говоря, я не особо разобрался:
function formSecSel (x)
{
for (var q = document.getElementById ('scnd'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;
for (var s = x.split ('|'), j = 0; j < s.length; j++)
{
var o = document.createElement ('option'); var t = s [j].split ('=');
o.value = unescape (t [0]); o.text = unescape (t [1]); q.options.add (o);
}
q.style.visibility = 'visible';
}
|
Здесь аргументом Х что является? | |
|
|
|
|
|
|
|
для: Silentium
(22.04.2009 в 10:21)
| |
<script>
var FIRST = new Array ('FIRSTvalue1=FIRSTtext1', 'FIRSTvalue2=FIRSTtext2', 'FIRSTvalue3=FIRSTtext3');
var SECOND = new Array ('SECONDvalue1=SECONDtext1', 'SECONDvalue2=SECONDtext2', 'SECONDvalue3=SECONDtext3');
function formSecSel (x)
{
for (var q = document.getElementById ('spis'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;
for (var j = 0; j < x.length; j++)
{
var o = document.createElement ('option'); var t = x [j].split ('=');
o.value = t [0]; o.text = t [1]; q.options.add (o);
}
q.style.display = '';
}
</script>
<u onclick="formSecSel (FIRST)">Сформировать список из массива FIRST</u><br>
<u onclick="formSecSel (SECOND)">Сформировать список из массива SECOND</u><hr>
<select id="spis" style="display: none"></select>
| Нескромный вопрос - "вам очень тяжело жить такому бестолковому или нормально?" | |
|
|
|
|
|
|
|
для: PAT
(22.04.2009 в 13:46)
| | Извиняюсь, может я туплю, но при использовании
например:
<a onclick="formSecSel('namber')">Сформировать список </a><br>
<select id="scnd" style=" width: 45px display:none;"></select>
|
выдает нечто следующее
<select id="scnd" style="">
<option value="n">undefined</option>
<option value="a">undefined</option>
<option value="m">undefined</option>
<option value="b">undefined</option>
<option value="e">undefined</option>
<option value="r">undefined</option>
</select>
|
P.S.: В Эксплорере вообще ничего не выводится | |
|
|
|
|
|
|
|
для: Silentium
(22.04.2009 в 16:33)
| | >"может я туплю"
Тупите-тупите, не сомневайтесь.
Во-первых, если вы уж начали разбираться с исходным скриптом, то МОГЛИ БЫ всё же дойти своим собственным умом, что в функцию передаётся СТРОКА, которая имеет разделители в виде символа |. И эти разделители "разделяют" между собою данные для будущих опшенов. Каждый из которых, в свою очередь, разделён символом =, где по левую сторону - значение value нового опшена, а по правую - значение text нового опшена.
Во-вторых, в 13:46 я уже выложил здесь вам версию, где в качестве аргумента функции передаётся не строка (кою внутри функции ранее "разделялась" на элементы массива), а уже готовый массив (где отдельные элементы массива представляют из себя пары "value=text").
Неужто самому ну НИКАК не разобраться в трёх строчках РАБОТАЮЩЕГО кода? Как, интересно, вы смогли освоить эксплуатацию простейшего сотового телефона? Или - так и не освоили?:-))) | |
|
|
|
|
|
|
|
для: PAT
(22.04.2009 в 16:45)
| | Про разделители я догадаться сумел, а вот в JS я пока в целом не силен, не знаю при чем тут сотовый, но я пользуюсь вертушкой) я понимаю что мой массив нужно привести к виду как у Вас, но в том то и дело что я не знаю как, у меня в массиве просто скопом цифры подряд лежат без всяких разделителей... | |
|
|
|
|
|
|
|
для: Silentium
(22.04.2009 в 17:03)
| | >у меня в массиве просто скопом цифры подряд лежат без всяких разделителей
Это что за массив такой у вас? :-)
Давайте сюда кусочек кода, где этот массив (или его отдельные элементы) определяются. | |
|
|
|
|
|
|
|
для: PAT
(22.04.2009 в 23:10)
| | Переменная берется из xml файла:
Вот кусок
var request = GXmlHttp.create();
request.open("GET", "example.php", true);
request.onreadystatechange = function() {
if (request.readyState == 4) {
var xmlDoc = GXml.parse(request.responseText);
// Read the data from example.xml
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++)
var namber = markers[i].getAttribute("number");
{
|
Переменную namber мне и надо приткнуть в Селект | |
|
|
|
|
|
|
|
для: Silentium
(23.04.2009 в 09:23)
| | Это вы с середины марта бьётесь над реализацией примера с http://econym.org.uk/gmap/example_map3.htm ?
Мда, действительно,.. тяжело быть бестолковым.
В приведённом выше кусочке кода у вас есть всего один массив
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
|
А затем вы - СОВЕРШЕННО НЕ ПОНИМАЯ ТОГО, ЧТО ПИШЕТЕ - создаете строковую переменную namber, которой столько раз меняете значение - сколько у вас элементов в массиве markers.
Поняли свою глупость?
Если не поняли, то поясню примером:
1. Положили вы в свой ПУСТОЙ кошелёк бумажку в 10 рублей.
2. Затем вытащили эту десятку и положили в кошелек купюру в 50 рублей
3. Затем вытащили полтинник и положили сотню.
Спрашивается - сколько денег у вас в кошельке после последней операции?
Правильный ответ - 100 рублей.
А никак не 160.
А что нужно сделать, чтобы в кошельке было именно 160 рублей?
Правильный ответ - не надо вытаскивать.
А что нужно сделать, если в одно отделение кошелька можно положить всего одну купюру?
Правильный ответ - надо в три отделения кошелька положить по одной купюре: в 10, в 50 и в 100 рублей.
|
Чтобы namber был массивом, в данном случае необходимо, во-первых, его определить. А во-вторых, создавать его поэлементно.
Т.е. ваш бред:
for (var i = 0; i < markers.length; i++)
var namber = markers[i].getAttribute("number");
| надо заменить на:
for (var namber = [], i = 0; i < markers.length; i++)
namber [i] = markers[i].getAttribute("number");
|
После этого кусочка кода пропишите тестовый alert ('!' + namber + '!') и вот именно ТО, что алерт покажет (включая начальный и конечный восклицательные знаки) сюда напишите - это и будет ваш массив, из которого вы хотите сделать список. Когда напишете, тогда и обсудим - где у вас value для опшенов, а где - текст для них. | |
|
|
|