javascript - 正确使用 removeChild()

标签 javascript html

我有一个将“div”子节点附加到父节点的函数,然后我需要使用 removeChild() 方法删除这个子节点,但它不起作用。

这是我的代码:

function ColorCards()
        {for (i=0; i<numerocaselle; i++)
            {document.getElementsByClassName("MemoryCards")[i].style.border="none"
            var esempiocolore=document.createElement('div')
            esempiocolore.style="position: relative; height: 80px; width: 130px; background-image: url('img/backcard"+cartaesempio+".png'); background-size: cover;"
            document.getElementsByClassName("MemoryCards")[i].appendChild(esempiocolore)
            }
        }

        function CleanColorCards()
        {for (i=0; i<numerocaselle; i++)
            {document.getElementsByClassName("MemoryCards")[i].style.border="dashed 3px #02A494"
            document.getElementsByClassName("MemoryCards")[i].removeChild(document.getElementsByTagName("div"))
            }
        }

有人对如何让它发挥作用有什么建议吗?

最佳答案

您正在将 NodeList 传递给 removeChild,而您应该传递单个节点。其次,document.getElementsByTagName("div") 还将查找不是您要从中移除子项的父项的子项的元素。

那么这样做:

// Avoid repetition of code, and store the result in a variable:
var nodelist = document.getElementsByClassName("MemoryCards");
for (var i=0; i<numerocaselle; i++){
    const parent = nodelist[i];
    parent.style.border="dashed 3px #02A494";
    // Perform `getElementsByTagName` on the parent node only, and take first match:
    parent.removeChild(parent.getElementsByTagName("div")[0]);
}

请注意,querySelector 是为获取一个节点结果而设计的,因此最后一行可以是:

    parent.removeChild(parent.querySelector("div"));

关于javascript - 正确使用 removeChild(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55995765/

相关文章:

javascript - 从指令调用 ngSubmit

html - 如何在CSS中居中hgroup

JavaScript 触发器不工作

Javascript 将正则表达式与组匹配

javascript - jQuery 1.7.1 - 文本输入的 'value' 未在 Firebug Inspect 元素中更新但在屏幕上

javascript - 使用拆分从字符串中获取信息

javascript - 如何识别哪个图像标签正在调用 mouseHover 函数?

javascript - 猫头鹰旋转木马-点击下一步图片

javascript - 从另一个页面获取 ElementById

jquery - 颜色选择器不添加到动态 HTML 表