So I want to filter select option
dropdown based on what user clicks by id:
document.querySelectorAll('#item-types').forEach(item => {
item.addEventListener('click', () => {
const categoriesSelect = document.querySelector('#item-categories')
const categoriesOptions = Array.from(categoriesSelect.options);
const selectType = item.dataset.typeId;
function findMatches(search, categoriesOptions) {
return categoriesOptions.filter(option => {
return option.value.match(search);
});
}
categoriesOptions.forEach(option => {
option.remove();
option.selected = false;
});
const matchArray = findMatches(selectType, categoriesOptions);
categoriesSelect.append(...matchArray);
});
});
<ul>
<li id="item-types" data-type-id="1">
<a href="#">
<div>Type1</div>
</a>
</li>
<li id="item-types" data-type-id="2">
<a href="#">
<div>Type2</div>
</a>
</li>
</ul>
<select id="item-categories">
<option value="1">category1</option>
<option value="1">category2</option>
<option value="1">category3</option>
<option value="2">category4</option>
<option value="2">category5</option>
</select>
But now when I click any of the list items for the first item it filters out okay, but when I click it second time it returns empty array for options
.