删除Div[JavaScript]中的最后一个元素
我有一个奇怪的问题。我正在尝试制作一个程序,在另一个名为“body”的div中添加和删除div。要添加div,我使用删除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变量,效果很好。我还尝试在变量中添加引号,但也没有成功。有什么
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()
,而我已经更新了代码,现在似乎可以工作了。