在javascript中动态创建和删除元素

在javascript中动态创建和删除元素,javascript,removechild,appendchild,Javascript,Removechild,Appendchild,直到两天前,我遇到了这个麻烦,我一直在想,在js中添加和删除元素会让我感觉很舒服 好的,请这是我的问题: 我试图动态创建div,将其附加到页面上的一个元素,为我在数组中创建的新div添加一个句柄,然后稍后运行一个循环并删除数组中的所有div(从数组和页面中) 这是我创建div的代码: var this_object=this;this.tempdivs=new Array();var thandle=''; var t=document.createElement('div');var br=

直到两天前,我遇到了这个麻烦,我一直在想,在js中添加和删除元素会让我感觉很舒服

好的,请这是我的问题:

我试图动态创建div,将其附加到页面上的一个元素,为我在数组中创建的新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);
这个对象。chat\u rec\u 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();
    }
var divlength=this_object.tempdivs.length;
对于(变量i=0;i

这非常令人沮丧,但我知道代码没有错,请问我做错了什么?

首先,为什么不使用
i
作为div数组的索引?for循环开始后的第一行应该是:

 var tempobj=this_object.tempdivs[i];
然后您可以删除此行:

 this_object.tempdivs.pop();
其次,在尝试删除元素之前,您可能需要检查以确保元素具有父元素(即尚未删除):

 tempobj.parentNode && tempobj.parentNode.removeChild(tempobj);

该更改将防止错误发生,但不会修复其原因。你得找出原因。如果没有任何其他代码发布,我不能说其他任何事情。

您考虑过使用JQuery吗?它使这类任务变得更容易。专门要求定制编码的人我想pop会从数组中删除最后一个元素,我没有使用“i”,因为我对最后一个元素感兴趣