2010-11-24 9 views
0

Ich dachte, ich wäre mit dem Hinzufügen und Entfernen von Elementen in js bequem bis vor zwei Tagen, als ich in diese Schwierigkeiten geriet.Dynamisch Erstellen und Entfernen von Elementen in Javascript

Ok, pls das ist mein Problem:

Ich habe versucht, zu einer elemnt auf der Seite dynamisch divs zu erstellen, hängen, einen Griff an den neuen div füge ich in einem Array erstellt, dann in eine Schleife laufen später und entfernen sie alle divs in dem Array (beide aus dem Array und der Seite)

Dies ist mein Code für die Erstellung der divs:

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 ist, wo ich nach der Erstellung anhängen, es tatsächlich ly wird angehängt.

Mein Problem ist, wenn die divs entfernen wollen, dass ich

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

Das ist sehr frustrierend erstellt haben, aber ich weiß Codes nicht falsch sind, bitte, was mache ich falsch?

+0

Haben Sie in Betracht gezogen, JQuery zu verwenden? Es erleichtert diese Art von Aufgaben erheblich. – ddrace

+0

die Person speziell für die benutzerdefinierte Codierung angefordert –

Antwort

0

Zunächst einmal, warum nicht einfach i als Index in das Array von Divs verwenden? Die erste Zeile nach dem Beginn Ihrer for-Schleife sein soll:

var tempobj=this_object.tempdivs[i]; 

Und dann können Sie diese Zeile löschen:

this_object.tempdivs.pop(); 

Zweitens können Sie überprüfen möchten, um sicherzustellen, dass das Element einen Elternteil (dh nicht bereits entfernt), bevor sie versuchen, es zu entfernen:

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

Diese Änderung wird den Fehler von dem auftreten verhindern, aber es wird mich nicht beheben ts Ursache. Sie müssen herausfinden, warum. Ohne weiteren Code kann ich nichts anderes sagen.

+0

Ich denke, Pop entfernt das letzte Element aus dem Array, ich habe nicht 'ich' cos im interessiert an dem letzten Element –

Verwandte Themen