Javascript 删除<;李>';在另一个中具有相同值的<;李>;
如果有两个Javascript 删除<;李>';在另一个中具有相同值的<;李>;,javascript,Javascript,如果有两个,一个称为列表a,另一个称为列表b,使用javascript而不使用任何像jQuery这样的库,您将如何删除列表a中与列表b中的值相同的 以下是示例HTML: <ul id="list_a"> <li value="1">list_a_0</li> <li value="8">list_a_8</li> <li value="9">list_a_9</li> </u
,一个称为列表a
,另一个称为列表b
,使用javascript而不使用任何像jQuery这样的库,您将如何删除列表a
中与列表b
中的值相同的
以下是示例HTML:
<ul id="list_a">
<li value="1">list_a_0</li>
<li value="8">list_a_8</li>
<li value="9">list_a_9</li>
</ul>
<ul id="list_b">
<li value="8">list_b_8</li>
<li value="9">list_b_9</li>
<li value="2">list_b_2</li>
</ul>
谢谢 演示:
window.onload=function(){
var listA=document.getElementById(“列表a”);
var listB=document.getElementById(“列表b”);
for(var i=0;i
- 不要在数值索引的迭代中使用
- 缓存DOM选择,而不是在循环中重新选择
- 使用
而不是.children
避免元素之间的文本节点.childNodes
- 比较
而不是.value
.innerHTML
- 删除
而不是x
listA
- 从
中删除元素时,减量列表a
,因为从DOM中删除意味着从i
集合中删除.children
函数初始化(){
var listA=document.getElementById(“列表a”);
var listB=document.getElementById(“列表b”);
对于(var i=0;ilistA.removeChild(listA);
应该是listA.removeChild(x)
我相信。看起来应该足够了。虽然….innerHTML
永远不会相同,因为列表项的内容不同。试着比较它们的.value
,看看这是否适合您的需要。我很好奇这个用例。可以这样做,但您的问题显然存在于其他地方(为什么要在JS中修复此问题)!不要使用innerhtml,请使用textnode及其值。此外,只需保留遇到的值的散列,如果该值已经存在,请删除该节点并移动到下一个节点。
<ul id="list_a">
<li value="1">list_a_0</li>
<!-- DELETED TWO <li>'s -->
</ul>
<ul id="list_b">
<li value="8">list_b_8</li>
<li value="9">list_b_9</li>
<li value="2">list_b_2</li>
</ul>
window.onload=function()
{
init();
function init()
{
var listA = document.getElementById("list_a");
for(var i in listA.childNodes)
{
var x = listA.childNodes[i];
var listB = document.getElementById("list_b");
for(var j in listB.childNodes)
{
var y = listB.childNodes[j];
if(x.innerHTML == y.innerHTML)
listA.removeChild(listA);
}
}
}
}
window.onload = function() {
var listA = document.getElementById("list_a");
var listB = document.getElementById("list_b");
for (var i = 0; i < listA.children.length; i++) {
var x = listA.children[i];
for (var j = 0; j < listB.children.length; j++) {
var y = listB.children[j];
if (x.value == y.value) {
listA.removeChild(x);
i--;
}
}
}
}
function init() {
var listA = document.getElementById("list_a");
var listB = document.getElementById("list_b");
for(var i =0; i<listA.children.length;i++) {
var x = listA.children[i];
for(var j in listB.children) {
var y = listB.children[j];
if(x.value == y.value)
x.parentNode.removeChild(x);
}
}
}