Добрый день.
Есть подобный массив массив.
CODE
{
"total": "2",
"univer": [
{
"id": 1,
"faculty": "Ф1",
"total": 3,
"chairs": [
"к1",
"к2",
"к3",
]
},
{
"id": 2,
"faculty": "Ф2",
"total": 2,
"chairs": [
"к1",
"к2",
]
}
]
}
Храним его пока что строкой в переменной
var chair = '{"total":"2","univer":[{"id":1,"faculty":"Ф1","total":3,"chairs":["к1","к2","к3",]},{"id":2,"faculty":"Ф2","total":2,"chairs":["к1","к2",]}]}';
есть два блока
Задача состоит в том что бы при выборе в первом блоке допустим Ф1.
Во второй блок загружались значения
ajaxObj.univer[i].chairs[j]
где
i - индекс или же его можно получить как
ajaxObj.univer[i].id - 1
т.к. простая индексация с нуля.
а
j это индексы элементов из
chairs
Мне удалось передать значения в поле
input, в данном случае передаю id, но можно и имя, код ниже.
CODE_2
<select id="myselect" onchange="javascript:selectChanged();">
<script type="text/javascript">
var chair = '{"total":"2","univer":[{"id":1,"faculty":"Ф1","total":3,"chairs":["к1","к2","к3"]},{"id":2,"faculty":"Ф2","total":2,"chairs":["к1","к2"]}]}';
var ajaxObj = JSON.parse(chair);
var m = ajaxObj.total - 1;
document.write('<option>Выберете из списка</option>');
for (var i = 0; i <= m; i++){
document.write('<option name=' + ajaxObj.univer[i].id + ' value="' + ajaxObj.univer[i].id + '">' + ajaxObj.univer[i].faculty + '</option>');
}
function selectChanged() {
var sel = document.getElementById('myselect');
var str = sel.selectedIndex ? (sel.options[sel.selectedIndex].value) : '0';
document.getElementById('my').value = str;
}
</script>
</select>
<input type="text" id="my">
Не знаю как сделать загрузку второго списка и его обновление при изменении значений в первом списке.
Пробовал по аналогии ловить значения из поля
var sel = document.getElementById('my'); и передавать их в цикл, но это глупо, да и не получилось.
Суть в том что при выборе в первом - Ф1, во втором можно выбирать к1,к2,к3 из его(Ф1) набора, а при выборе в первом Ф2 - к1, к2. соответственно из набора Ф2.
Буду искренне благодарен за помощь. (: