2010-11-24 57 views
0

我在想,如果在两天前遇到这种麻烦,我会很自在地在js中添加和删除元素。动态创建和删除javascript中的元素

好了,请这个是我的问题:

我试图动态创建的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就是我创建后追加,它实际随后附加。

我的问题是当要删除我创建

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(); 
    } 

这是非常令人沮丧的div,但我知道代码是没有错的,请我究竟做错了什么?

+0

你有没有考虑过使用JQuery?它使得这些任务更容易。 – ddrace 2010-11-24 05:14:07

+0

特别要求自定义编码的人 – 2010-11-24 05:22:02

回答

0

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

var tempobj=this_object.tempdivs[i]; 

然后你就可以删除这一行:

this_object.tempdivs.pop(); 

其次,你可能要检查,以确保该元素有一个父试图将其删除(尚未删除):

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

这一变化将防止错误的发生,但它不会解决我因为。你必须找出原因。没有任何其他代码发布,我不能说别的。