javascript - 使用javascript删除列表的最后一项

标签 javascript html

<分区>

您好,我有一个简单的无序列表,我想通过单击按钮删除最后一项。我在某处读到 pop();会这样做,但我无法让它正常工作。

这是我目前所拥有的:

<button id="remove">remove item</button>

<ul id="list">
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
</ul>

var listItems = document.getElementById("list").getElementsByTagName("li");
var removeButton = document.getElementById("remove");

removeButton.addEventListener("click", removeItem);

function removeItem() {
    listItems.pop();
}

这是我遇到的错误:

未捕获的类型错误:listItems.pop 不是 HTMLButtonElement.removeItem 中的函数

这很奇怪,因为当我在控制台中键入 listItems 时,我得到了正确的数组:

列表项 (7) [li, li, li, li, li, li, li]

jsfiddle

有人有什么建议吗?我不需要使用 .pop() 任何有效的方法都可以

最佳答案

pop 是一个数组函数。您必须像这样删除列表项:

function removeItem() {
    var last = listItems[listItems.length - 1];
    last.parentNode.removeChild(last);
}

注意 1:我们不需要递减 listItems.length,因为它是一个实时的 HTMLCollection(由 getElementsByTagName 返回)反射(reflect)DOM(如果一个元素从 DOM 中移除,那么它会自动从集合中移除)。

注意 2:您可能需要在尝试删除最后一项(如果为空则不存在)之前检查集合是否为空。查看下面的示例以查看操作方法。

示例:

var listItems = document.getElementById("list").getElementsByTagName("li");
var removeButton = document.getElementById("remove");

removeButton.addEventListener("click", removeItem);

function removeItem() {
    if(listItems.length === 0) return;           // if there is no items in listItems then quit the function (don't attempt to remove what doesn't exist)

    var last = listItems[listItems.length - 1];
    last.parentNode.removeChild(last);
}
<button id="remove">remove item</button>

<ul id="list">
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
    <li><input type="text"></li>
</ul>

关于javascript - 使用javascript删除列表的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937553/

相关文章:

javascript - phantomjs 和我的网络浏览器之间的渲染差异

JavaScript OnClick 处理程序未调用

javascript - DropzoneJS : Preview selected image before upload in div as <img>

javascript - 将动态字符串绑定(bind)到 Electron JS 函数

javascript - 获取由内容元素选择的 dom-repeat 模板生成的元素

html - CSS 最大高度/宽度 100% 溢出

javascript - Angular js 不使用 ng-repeat 打印 ng-init 的数据

javascript - 从 location.hash 中提取特定的参数值

javascript - 将 Canvas 数据导出到 json

javascript - 一旦用户选择,如何在下拉菜单上保持相同的位置