Siechfred: Instanzen verwalten

Beitrag lesen

Tag Karrackoo.

Ich will per Formular eine beliebige Anzahl DIV Layer erstellen. Diese haben als Inhalt einen Titel und eine Nachricht (Notizzettel). Jeder dieser Zettel sollte man aber auch wieder löschen können, drum muss ich wenn ich ein neues Objekt "Notizzettel" erstelle irgednwie wissen welche Instanz das ist.

Das geht in Javascript nur, indem du mehrere Objektinstanzen erzeugst:

note1 = new Note(Titel, Inhalt);
note2 = new Note(Zitel, Inhalt);
usw.

Ich kann ja nicht einfach jeder
note1 = new Note(Titel, Inhalt);
benennen, sonst wird note1 immer wieder überschrieben...

Die entscheidende Frage ist, ob du tatsächlich mehrere Objektinstanzen brauchst. Mal ein Beispiel:

function Note(divID,Titel,Inhalt) {  
  this.identifier = divID;  
  this.title = Titel;  
  this.content = Inhalt;  
  this.draw = function() {  
    var parElem = document.body;  
    var neuElem = document.createElement('DIV');  
    var neuHead = document.createElement('H1');  
    var Head = document.createTextNode(this.title);  
    neuHead.appendChild(Head);  
    var neuText = document.createElement('P');  
    var Text = document.createTextNode(this.content);  
    neuText.appendChild(Text);  
    var delLink = document.createElement('A');  
    delLink.href = "javascript:deleteNote('" + this.identifier + "');";  
    deleteNote(this.identifier); }  
    Link = document.createTextNode("Notiz loeschen");  
    delLink.appendChild(Link);  
    neuElem.id = this.identifier;  
    neuElem.appendChild(neuHead);  
    neuElem.appendChild(neuText);  
    neuElem.appendChild(delLink);  
    parElem.appendChild(neuElem);  
                         }  
}  
  
function neueNotiz(ID,Beschriftung,Notiz) {  
  if(typeof note == 'undefined') {  
    note = new Note(ID,Beschriftung,Notiz);  
  }  
  else {  
    note.identifier = ID;  
    note.title = Beschriftung;  
    note.content = Notiz;  
  }  
  note.draw();  
}  
  
function deleteNote(note_id) {  
  var DIV_to_delete = document.getElementById(note_id);  
  document.body.removeChild(DIV_to_delete);  
}

Das Ganze zum Testen: http://test.anaboe.net/div_test.html. Soll es nicht so sein, dann wirst du in der Tat so viele Objektinstanzen erzeugen müssen, wie du brauchst. Diese könntest du auch in einem eigenen Objekt sammeln:

var collection = new Object();  
collection['Notiz1'] = new Note(...);  
collection['Notiz2'] = new Note(...);

Der Zugriff wäre dann:

collection['Notiz1'].Eigenschaft

Ein Objekt entfernst du dann einfach mittels delete():

delete collection['Notiz1']

Das Ganze ebenfalls zum Testen: http://test.anaboe.net/div_test2.html.

Siechfred