dasIcebaer
Grünschnabel
Nach meinen ursprünglichen Posting von gestern gibt es nun mit dem Code ein neues Problem: Das entfernen von Childs.
Das dazugehörige Element sieht so aus:
Zur Erläuterung:
Beim klicken auf "neue Zeile" (im zweiten <li>..</li>-Block) wird der komplette <li>..</li>-Baum geklont und unten angehängt; gleichzeitig wird der geklickte Button in einen "delete"-Button geändert, damit die Zeile gelöscht werden kann. Soweit klappt auch alles.
Jetzt kann es aber sein, dass - falls der Benutzer Fehler bei der Eingabe macht - die eingegebenen Daten wieder reingeladen werden. Dann entsteht ein Block wie oben, mit z.B. zwei (alten) Einträgen.
Die Funktionalität von "neue Zeile" funktioniert, die letzte Zeile kann auch auf den (anschließend vorhandenen) "entfernen"-Button wieder gelöscht werden, aber der alte "Entfernen"-Button funktioniert nicht (der erste <li>..</li>-Block). Die Fehlermeldung auf der Konsole ist "this.parentNode has no properties".
Kann jemand erklären, was da falsch läuft?
Code:
function clone_this(objBtn) {
var objClone = objBtn.parentNode.cloneNode(true);
objBtn.parentNode.parentNode.appendChild(objClone);
for (j=0;j<objBtn.parentNode.parentNode.lastChild.childNodes.length;j++)
{
if (objBtn.parentNode.parentNode.lastChild.childNodes[j].type=='text')
{
objBtn.parentNode.parentNode.lastChild.childNodes[j].value='';
}
}
objBtn.value="entfernen";
objBtn.style.background="#c33";
objBtn.onclick=new Function('remove_this', 'this.parentNode.parentNode.removeChild(this.parentNode)');
}
function remove_this(objBtn) {
this.parentNode.parentNode.removeChild(this.parentNode);
}
Das dazugehörige Element sieht so aus:
HTML:
<fieldset>
<ol>
<li>
<input type="text" name="partiesGer[]" value="partei 1" />
<input type="text" name="partiesEng[]" value="party 1" />
<input value="entfernen" type="button" onclick="remove_this(this)">
</li>
<li>
<input type="text" name="partiesGer[]" value="partei 3" />
<input type="text" name="partiesEng[]" value="party 3" />
<input value="neue Zeile" type="button" onclick="clone_this(this)">
</li>
</ol>
</fieldset>
Zur Erläuterung:
Beim klicken auf "neue Zeile" (im zweiten <li>..</li>-Block) wird der komplette <li>..</li>-Baum geklont und unten angehängt; gleichzeitig wird der geklickte Button in einen "delete"-Button geändert, damit die Zeile gelöscht werden kann. Soweit klappt auch alles.
Jetzt kann es aber sein, dass - falls der Benutzer Fehler bei der Eingabe macht - die eingegebenen Daten wieder reingeladen werden. Dann entsteht ein Block wie oben, mit z.B. zwei (alten) Einträgen.
Die Funktionalität von "neue Zeile" funktioniert, die letzte Zeile kann auch auf den (anschließend vorhandenen) "entfernen"-Button wieder gelöscht werden, aber der alte "Entfernen"-Button funktioniert nicht (der erste <li>..</li>-Block). Die Fehlermeldung auf der Konsole ist "this.parentNode has no properties".
Kann jemand erklären, was da falsch läuft?