我为下面的无序列表的 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>
我创建了一个元素ID数组,我想将NodeList与之进行比较
['aa0','aa1,'aa7','aa8']
我使用以下 javascript(如下)将 NodeList 与 Array 进行比较。目标是确定数组中的哪些元素已经在 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")}
}
}
}
目前我只是显示警报,我将在其中引用附加结构。请注意,我对此很陌生。我知道 NodeList 的行为不像数组,并且在此函数中间调整 DOM 会改变 NodeList 并可能搞砸一切。
我的问题是:这似乎有点笨重,是否有更简洁或更强大的方法来实现这个目标?正如我在这里展示的那样,尝试基于数组调整 DOM 结构是否存在任何固有的危险?
请不要使用jquery。
谢谢你的帮助