直到两天前,当我遇到这个问题时,我觉得我很乐意在js中添加和删除元素。
好的,请问这是我的问题:
我试图动态创建div,在页面上追加到elemnt,为数组中创建的新div添加句柄,然后运行循环并删除数组中的所有div(都来自数组和页面)
这是我创建div的代码:
var this_object=this;this.tempdivs=new Array();var thandle='';
var t=document.createElement('div');var br=document.createElement('br');
var txt=document.createTextNode(content_body);
t.appendChild(content);t.appendChild(txt);t.appendChild(br);
thandle=this_object.chat_rec_handle.appendChild(t);
this_object.tempdivs.push(thandle);
this_object.chat_rec_handle 是我在创建后附加的地方,它实际上会被附加。
我的问题是什么时候想删除我创建的div
var divlength=this_object.tempdivs.length;
for(var i = 0; i < divlength; i++)
{
var tempobj=this_object.tempdivs[this_object.tempdivs.length-1];
alert(tempobj.parentNode);
/* this alert gives me null, does that mean the parent no longer exists? */
tempobj.parentNode.removeChild(tempobj);
this_object.tempdivs.pop();
}
这非常令人沮丧,但我知道代码没有错,请问我做错了什么?
答案 0 :(得分:0)
首先,为什么不使用i
作为div数组的索引? for循环开始后的第一行应该是:
var tempobj=this_object.tempdivs[i];
然后你可以删除这一行:
this_object.tempdivs.pop();
其次,在尝试删除元素之前,您可能需要检查以确保该元素具有父元素(即尚未删除):
tempobj.parentNode && tempobj.parentNode.removeChild(tempobj);
该更改将防止错误发生,但不会解决其原因。你必须找出原因。没有发布任何其他代码,我不能说其他任何内容。