Javascript JS:remove lastChild每秒仅工作一次按钮单击
我使用此代码删除Javascript JS:remove lastChild每秒仅工作一次按钮单击,javascript,html,dom,removechild,Javascript,Html,Dom,Removechild,我使用此代码删除列表中的最后一项,但仅在第二、第四、第六。。。每秒钟单击一次按钮,项目就会被删除,但每次单击都会显示消息。我该怎么做才能在每次单击时删除元素 document.getElementsByTagName('input')[0]。onclick=function(){ "严格使用",; var list=document.getElementById('list'),item=list.lastChild; 列表.删除child(项目); 窗口。警报(“删除”); }; 清单项目
列表中的最后一项,但仅在第二、第四、第六。。。每秒钟单击一次按钮,项目就会被删除,但每次单击都会显示消息。我该怎么做才能在每次单击时删除元素
document.getElementsByTagName('input')[0]。onclick=function(){
"严格使用",;
var list=document.getElementById('list'),item=list.lastChild;
列表.删除child(项目);
窗口。警报(“删除”);
};代码>
- 清单项目1
- 清单项目2
- 清单项目3
列表项目4
- 清单项目5
这是因为.lastChild
返回所有节点,包括
中存在的空文本节点。改为使用.lastElementChild
以
节点为目标
此属性与lastElementChild的区别在于
lastChild将最后一个子节点作为元素节点(文本节点)返回
或注释节点(取决于最后一个节点),而
lastElementChild将最后一个子节点作为元素节点返回
(忽略文本和注释节点)
有关更多信息,请参阅和
document.getElementsByTagName('input')[0]。onclick=function(){
var list=document.getElementById('list'),item=list.lastElementChild;
列表.删除child(项目);
};代码>
- 清单项目1
- 清单项目2
- 清单项目3
列表项目4
- 清单项目5
更改:
item = list.lastChild;
到
好的,它现在可以工作了,我认为文本节点是元素节点的子节点,所以删除元素节点也会删除文本节点。@danielr1996,它是这样做的,但是您正在删除<代码>文本节点< /代码>而不是<代码>元素节点< /代码>使用<代码> ListelEngEngs< /C> >删除<代码>元素节点< /代码>,它也删除了<代码>文本节点< /代码> @ Daielr1996。这是奇怪的,在我的代码< > UL> 中有我认为的“幻象”文本节点。签出以查看注销到的空文本节点console@danielr1996我在答案中添加了一些可能有用的额外细节
item = list.lastElementChild;