|
|
|
| есть массивы:
var c1 = new Array();
c1[1] = "BBK";
c1[6] = "Odeon";
c1[7] = "Panasonic";
var c2 = new Array();
c2[1] = "BBK";
c2[2] = "Hyunday";
c2[5] = "LG";
c2[6] = "Odeon";
c2[7] = "Panasonic";
c2[9] = "Pioneer";
c2[10] = "SONY";
c2[11] = "Sven";
c2[13] = "Samsung";
c2[15] = "Denon";
|
и есть 2 <SELECT>
<select name="mod_cat" id="sselect" onchange="chcat();">
<option value="1">Портативные DVD</option>
<option value="2">DVD проигрыватели</option>
</select>
<select id="dselect" name="brand_id">
</select>
|
Так вот. Мне надо чтобы при выборе категории из select mod_cat в select brand_id загружались значения из соответствующих массивов. Но только чтобы option value были номера брендов. т.е. чтобы value шли не по порядку, а как в массиве c1[1] = "BBK", c1[6] = "Odeon";
Накалякал такую функцию
function chcat()
{
dselect = document.getElementById("dselect");
sselect = document.getElementById("sselect");
cat_id = sselect.selectedIndex + 1;
arr_name = "c"+cat_id;
arr_len = arr_name.Length;
for (var i=1; i<=arr_len; i++)
{
dselect.options[i] = new Option(i,arr_name[i]);
}
}
|
Только не получается к массиву правильно обратится... :(
К AJAX не посылать :)
Помидорами бросать можно. | |
|
|
|
|
|
|
|
для: kukuikar
(10.01.2008 в 01:56)
| | В вашем конкретном случае я бы сделал так:
<script>
function f (x)
{
var t = x.selectedIndex;
with (document)
{
getElementById ('myCell').childNodes [0].style.display = (t == 1) ? 'inline' : 'none';
getElementById ('myCell').childNodes [1].style.display = (t == 2) ? 'inline' : 'none';
}
}
</script>
<table cellpadding="0" cellspacing="0"><tr>
<td
><select onchange="f (this)" style="margin-right: 20px">
<option>Выберите категорию
<option>Портативные DVD
<option>DVD проигрыватели
</select
></td>
<td id="myCell"
><select name="c1" style="display: none">
<option value="1">BBK
<option value="6">Odeon
<option value="7">Panasonic
</select
><select name="c2" style="display: none">
<option value="1">BBK
<option value="2">Hyunday
<option value="5">LG
<option value="6">Odeon
<option value="7">Panasonic
<option value="9">Pioneer
<option value="10">SONY
<option value="11">Sven
<option value="13">Samsung
<option value="15">Denon
</select
></td>
</tr>
</table>
|
Но если уж очень надо "динамически формировать", то пользуйте поиск - только я уже раза три (если не больше) писал здесь скрипт формирования второго select'a по выбору в первом. | |
|
|
|
|
|
|
|
для: CNT
(10.01.2008 в 04:55)
| | с формированием selecta нет проблем, с этим разобрался.
Я не сказал, что массивы получаю из MySQL базы, через PHP, и длина из может как увеличиваться, так и уменьшаться, т.е. я заранее не знаю сколько в массиве будет данных.
Проблема в том как мне обратиться к массиву, который определен вне функции.
Т.е. массивы вне функции с1...с27
А в функции как мне с ними работать?
Значениями массива то я заполню сам. Немогу обратиться к ним.
for(i=1;i<=27;i++)
{
arr_name = 'c'+i; //номер массива
arr_len = arr_name.length; // возвращвет длину строки arr_name
}
|
'c' + i в цикле дает просто строку 'c1...27' | |
|
|
|
|
|
|
|
для: kukuikar
(10.01.2008 в 01:56)
| | Все! Решил с помощью JSON. Вещь!
Вот код, может кому пригодится:
<script language="JavaScript" type="text/javascript">
function loadURL(list) {
var url = list.options[list.selectedIndex].value;
if (url != "") {
location.href = url;
}
}
var data =
{
"1" : [{"brand_id": "1", "brand_name": "BBK"},{"brand_id": "2", "brand_name": "JVC"},{"brand_id": "3", "brand_name": "SONY"}],
"2" : [{"brand_id": "4", "brand_name": "PANASONIC"},{"brand_id": "5", "brand_name": "YAMAHA"}]
};
function loadElements(frm)
{
with (frm)
{
var category = elements["categories"].options[elements["categories"].selectedIndex].value;
if (category != "")
{
var links = data[category];
elements["brand_id"].options.length = 0;
elements["brand_id"].options[0] = new Option("Выберите бренд...", "#");
for (var i=0; i<links.length; i++)
{
elements["brand_id"].options[elements["brand_id"].options.length] = new Option(links[i].brand_name, links[i].brand_id);
}
}
}
}
function clc()
{
var ss = document.getElementById("brand_id");
alert(ss.options[ss.selectedIndex].text + " = " + ss.value);
}
</script>
<form>
<select name="categories" onchange="loadElements(this.form);">
<option value="#">Выберите категорию</option>
<option value="1">Портативные DVD</option>
<option value="2">DVD проигрыватели</option>
</select>
<!-- select name="urls" onchange="loadURL(this);" -->
<select name="brand_id" id="brand_id">
</select>
<input type="button" onclick="clc();"
</form>
|
| |
|
|
|