javascript - 如何从 HTMLCollection 中删除一个项目?

标签 javascript htmlcollection

我有一些 Javascript 代码可以从 HTMLCollection 中删除一个项目,如下面的代码所示。调用 splice 时出现错误:allInputs.splice is not a function。如果元素类型不是按钮类型,我需要从 HTMLCollection 中删除项目。

问题:如何从这样的集合中删除一个项目?

我可以将未删除的项目传输到一个数组,然后我可以使用该数组而不是原始的 HTMLCollection,但不确定是否有任何其他更短的方法可以做到这一点。

JavaScript 代码

    var allInputs = contentElement.getElementsByTagName('input');
    for (var i = (allInputs.length - 1) ; i >= 0; i--) {
        if (allInputs[i].type !== "button") {
            allInputs.splice(i, 1);//this is throwing an error since splice is not defined
        }
    }

最佳答案

您需要将其从 DOM 中删除,因此替换:

allInputs.splice(i, 1);

与:

allInputs[i].parentNode.removeChild(allInputs[i])

它甚至与 IE 6 等古老的浏览器兼容。该集合将自动更新。反向迭代集合是个好主意,因为每次删除成员时,它都会变短。

注意:

[].slice.call(allInputs)

在像 IE8 这样不允许宿主对象在内置方法中是 this 的浏览器中会失败。

关于javascript - 如何从 HTMLCollection 中删除一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311003/

相关文章:

javascript - 关于 HTMLCollections 和命名属性的问题,继续使用?

javascript - 如何迭代 HTMLCollection?

javascript - 如何在 Firefox 和 IE 中将 HTML 集合转换为数组

javascript - 如何在每个类中找到 href 属性?

javascript - Jquery 对话框内容有时会返回旧数据

javascript - 在 React 中使用相同处理函数切换多个 div 的优化方式

javascript - 使用 append() 时在按钮内添加跨度

javascript - jquery 中未捕获的语法错误 : Unexpected token .

javascript - 从 HTMLCollection 获取值到字符串