删除Div[JavaScript]中的最后一个元素

删除Div[JavaScript]中的最后一个元素,javascript,html,dom,global-variables,getelementbyid,Javascript,Html,Dom,Global Variables,Getelementbyid,我有一个奇怪的问题。我正在尝试制作一个程序,在另一个名为“body”的div中添加和删除div。要添加div,我使用document.getElementById(“body”).innerHTML。添加可以很好地工作。但是,在deleting函数中,我用一个变量替换“body”id,该变量的id是将被删除的div。但是当我运行代码时,我得到一个错误“cannotsetinnerHTML为null”。我试着用一个固定的局部变量替换id变量,效果很好。我还尝试在变量中添加引号,但也没有成功。有什么

我有一个奇怪的问题。我正在尝试制作一个程序,在另一个名为“body”的div中添加和删除div。要添加div,我使用
document.getElementById(“body”).innerHTML
。添加可以很好地工作。但是,在deleting函数中,我用一个变量替换“body”id,该变量的id是将被删除的div。但是当我运行代码时,我得到一个错误“cannotsetinnerHTML为null”。我试着用一个固定的局部变量替换id变量,效果很好。我还尝试在变量中添加引号,但也没有成功。有什么原因不能将id设置为一个不断变化的变量吗?谢谢

这是我的密码:

var i=1;
函数myFunction(){
var addDiv=document.getElementById(“body2”);
addDiv.innerHTML+=“
foo”; i++; } 函数myFunction2(){ var deleteDiv=document.getElementById(i); deleteDiv.innerHTML=“”; 我--; }

洛拉德
删除

您在添加div后增加了i,因此在删除时必须使用
i-1
,以获得正确的id

var i=1;
函数myFunction(){
var addDiv=document.getElementById(“body2”);
addDiv.innerHTML+=“
foo”; i++; } 函数myFunction2(){ var deleteDiv=document.getElementById(i-1); deleteDiv.remove(); 我--; }

洛拉德
删除

您在添加div后增加了i,因此在删除时必须使用
i-1
,以获得正确的id

var i=1;
函数myFunction(){
var addDiv=document.getElementById(“body2”);
addDiv.innerHTML+=“
foo”; i++; } 函数myFunction2(){ var deleteDiv=document.getElementById(i-1); deleteDiv.remove(); 我--; }

洛拉德
删除

要删除最后一个子项,您甚至可以使用CSS选择器
最后一个子项
。您还应该向新添加的div添加特定的类,因为您只希望删除新添加的
div
s

这也将删除
i
的依赖项

作为一个插件,您还可以使用
document.createElement
+
Node.appendChild
而不是设置
innerHTML
<对于高度嵌套的结构,code>.innerHTMl将非常昂贵

函数myFunction(){
document.getElementById(“body2”).appendChild(getDiv());
}
函数getDiv(i){
var div=document.createElement('div');
div.classList.add('内部')
var ta=document.createElement('textarea');
ta.textContent='foo';
儿童部(ta);
返回div;
}
函数myFunction2(){
var div=document.querySelector(“#body2 div.inner:最后一个子项”)
div&&div.remove()
}

洛拉德
删除

要删除最后一个子项,您甚至可以使用CSS选择器
最后一个子项
。您还应该向新添加的div添加特定的类,因为您只希望删除新添加的
div
s

这也将删除
i
的依赖项

作为一个插件,您还可以使用
document.createElement
+
Node.appendChild
而不是设置
innerHTML
<对于高度嵌套的结构,code>.innerHTMl将非常昂贵

函数myFunction(){
document.getElementById(“body2”).appendChild(getDiv());
}
函数getDiv(i){
var div=document.createElement('div');
div.classList.add('内部')
var ta=document.createElement('textarea');
ta.textContent='foo';
儿童部(ta);
返回div;
}
函数myFunction2(){
var div=document.querySelector(“#body2 div.inner:最后一个子项”)
div&&div.remove()
}

洛拉德
删除

作为一个旁白,document.getElementById(“body”).innerHTML可以缩短为document.body.innerHTML。实际上不建议使用原始数值作为ID(在整个页面中应该是唯一的)。我建议使用前缀,如
id='myprefix_uquo+I+”
作为一个旁白,document.getElementById(“body”).innerHTML可以缩短为document.body.innerHTML。实际上不建议使用原始数值作为id(在整个页面中应该是唯一的)。我建议使用前缀,如
id='myprefix_u“+I+”
我尝试了您的解决方案,但在多次加减之后,它停止工作并按顺序删除它们。这是因为
deleteDiv.innerHTML=“”
,我之前错过了它,您需要使用
deleteDiv.remove()
,我更新了代码,现在似乎可以工作了。我尝试了您的解决方案,但在多次加减后,它停止工作,并按顺序删除它们。这是因为
deleteDiv.innerHTML=“”,我之前错过了它,您需要使用
deleteDiv.remove()
,而我已经更新了代码,现在似乎可以工作了。