Я создал NodeList для ChildNodes неупорядоченного списка нижеСравнивая NodeList на массив элементы идентификаторы
<body>
<ul id="win" >win
<li id="aa0">text</li>
<li id="aa1"></li>
<li id="aa2"></li>
<li id="aa3"></li>
<li id="aa4"></li>
<li id="aa5"></li>
</ul>
</body>
и я создал массив элементов идентификаторов, что я хочу, чтобы сравнить NodeList с
['aa0','aa1,'aa7','aa8']
и я использовал следующий javascript (ниже), чтобы сравнить NodeList с массивом. Цели состоят в том, чтобы определить, какие элементы в массиве уже находятся в DOM или должны быть добавлены в DOM ... И определить, какие элементы, находящиеся в настоящее время в DOM, необходимо удалить, чтобы я мог добавить UL, чтобы он содержал только id, которые находятся в массиве.
function nodeinfo(){
//these are the ids that we want in the ul
var ids=['aa0','aa1','aa7','aa8']
var node=document.getElementsByTagName('ul')[0];
var nodelist=node.childNodes;
//test to see if array ids are in nodelist
for(var j=0;j<ids.length;j++){
if(document.getElementById(ids[j])){alert(ids[j]+" is here, keep")}
else{alert(ids[j]+" is not here, add")}
}
//test to see if nodelist ids are in array
for(var j=0;j<nodelist.length;j++){
if(nodelist[j].id != undefined){
var tempi=0
for(var k=0;k<ids.length;k++){
if(nodelist[j].id === ids[k]){tempi++}
}
if (tempi !=1){alert(nodelist[j].id+" is unwanted, remove")}
}
}
}
В настоящее время я просто показываю предупреждения, где я буду ссылаться на добавление структуры. Обратите внимание, что я довольно новичок в этом. Я знаю, что NodeLists не ведут себя как массивы, и что настройка DOM в середине этой функции изменит NodeList и, вероятно, повредит все.
Мои вопросы: это кажется громоздким, есть ли более сжатый или надежный подход к этой цели? и существует ли какая-либо неотъемлемая опасность при попытке настроить структуру DOM на основе массива, как я показываю здесь?
и, пожалуйста, не jquery.
Спасибо за вашу помощь
Какие браузеры вам нужны для поддержки? Если вы можете избежать старых IE, то такие вещи, как 'Array.filter', будут полезны –
по крайней мере IE8 и выше ... но предпочли бы IE6 –
Из любопытства, почему _no jquery_? (Особенно, если вы планируете поддерживать IE6-8.) – pdoherty926