2010-11-24 53 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); 

這一變化將防止錯誤的發生,但它不會解決我因爲。你必須找出原因。沒有任何其他代碼發佈,我不能說別的。