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

时间:2010-11-24 05:06:02

标签: javascript removechild appendchild

直到两天前,当我遇到这个问题时,我觉得我很乐意在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();
    }

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

1 个答案:

答案 0 :(得分:0)

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

 var tempobj=this_object.tempdivs[i];

然后你可以删除这一行:

 this_object.tempdivs.pop();

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

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

该更改将防止错误发生,但不会解决其原因。你必须找出原因。没有发布任何其他代码,我不能说其他任何内容。