Вы должны привести в порядок свой html с учетом повторяющихся идентификаторов, а <li>
s не являются прямыми детьми, если <ul>
.
Сделав это, совет @ Амбуж Ханны должен быть полезным. Возможно, вам придется применять parentElement
несколько раз.
Мне пришло в голову, что вся операция - это то, что можно было сделать с помощью jQuery в две строки:
var flt=$('#myInput').val().toUpperCase();
$('#myUl>div').each(function(i,div){$(div).toggle($('li',div).text().toUpperCase()==flt)})
Вышеприведенные элементы должны показывать div верхнего уровня - чуть ниже вашего <ul#myUl>
- и скрывать все остальные. Однако элемент ниже <ul>
всегда должен быть элементом <li>
.