У меня есть объект JSON, который содержит категории и соответствующие подкатегории. У меня есть два выпадающих списка (как строка таблицы), в первом выпадающем списке содержится список категорий. Когда определенная категория выбранный, второй раскрывающийся список заполняется суб-категориями выбранной категории. Я сделал это и отлично работает.Зависимые выпадающие списки, которые нужно добавить динамически с помощью javascript
Теперь у меня есть требование динамически добавлять строки. Кроме того, функция добавления строки также работает нормально.
Но я не могу установить связь между выпадающими списками динамически добавленных строк.
Я знаю причину - я не могу назначить идентификатор динамически созданным выпадающим спискам, и хенс не может установить никаких отношений между ними.
Просьба предложить установить необходимые отношения.
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
<form id="myForm">
<TABLE id="dataTable" >
<TR><TD>
<select id="selectCategory" onchange="GetSelectedItem()">
<option>Choose a category</option>
</select>
</TD>
<TD>
<select id="selectSubCategory" >
<option>Choose a sub-category</option>
</select>
</TD></TR>
</TABLE>
</form>
Сценарий:
<script><!--
var jsonObj={"category1":["subcat 1"],"category2":["subcat 2.1","subcat 2.2"],"category3":["subcat 3.1","subcat 3.2","subcat 3.3"]};
var keys= Object.keys(jsonObj);
var category_dropdown = document.getElementById("selectCategory");
for (var keys in jsonObj) {
category_dropdown[category_dropdown.length] = new Option(keys,keys);
}
function GetSelectedItem() {
var e = document.getElementById("selectCategory");
var selectedCategory = e.options[e.selectedIndex].value;
var sub_category_dropdown = document.getElementById("selectSubCategory");
document.getElementById("selectSubCategory").options.length=0; //clearing previous values of the drop-down list
for(var i=0;i<jsonObj[selectedCategory].length;i++) {
sub_category_dropdown[sub_category_dropdown.length] = new Option(jsonObj[selectedCategory][i],jsonObj[selectedCategory][i]);
}
}
function addRow(tableID)
{
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
newcell.childNodes[0].selectedIndex = 0;
}
}
//--></script>
Что динамически создается строка должна иметь в качестве входных данных при нажатии на нее? Непонятно, каковы желаемые отношения ... – gmaliar
Я хочу, чтобы динамически созданная строка имела два выпадающих списка - сначала для категории и вторая из подкатегории. Теперь, когда я нажимаю кнопку «Добавить строку», добавляются два выпадающих списка , но два выпадающих списка не имеют отношения друг к другу. i, например, когда я выбираю категорию1 в первом раскрывающемся списке (динамически добавляется), подкатегории не заполняются во втором раскрывающемся списке (динамически добавляются). – Soumya
Да, я понимаю, вы можете использовать jQuery? – gmaliar