Autor Zpráva
Louka
Profil
Dobrý den, lze nějak pomocí JS zařídit destrukci daného objektu (který byl předtím pomocí JS vytvořen)?
Asi je to blbost, já nevim...

Ale mám funkci:
function Pridej() { // přídá do nabídky další pole pro text
document.getElementById('setkatalog').innerHTML += '<input type=\'text\' id=\'kriterium-' + kriteria + '\' name=\'kriterium-' + kriteria + '\'><br>';
kriteria++;
}

...
Šla by nějak napsat funkce co by takto vytvořený objekt dovedla odstranit?
Něco na tento způsob...

function Odstran() {
document.getElementById('kriterium-' + kriteria).destroy; // nevím, to jsem si vymyslel :D
kriteria--;
}
Nox
Profil
http://www.google.com/search?hl=cs&q=removechild
peta
Profil
http://www.volny.cz/peter.mlich/www.htm#msub8
tusim objekt.parent.removechild(objekt)
nekde funguje objekt.outherHTML = '';
ja bych ho nastavil jenom display:none; pripadne jej obklopil necim, co bych prepisoval na innerHTML = '';
Anonymní návštěvník
Profil *
Louka:
Destroy pro odstranění objektu? Skvělý nápad, díky!
Object.prototype.destroy = function(){return this.parentNode.removeChild(this);}
Chamurappi
Profil
Reaguji na Anonymního návštěvníka:
Skvělý nápad to není, rozšiřování Object.prototype může škodit, nastražuješ si tím nášlapnou minu pro všechny for-in smyčky.
ah01
Profil
Anonymní návštěvník
V tomto případě je ale ještě mnohem horší než to co zmiňuje Chamurappi fakt, že rozšiřuješ obecný objekt o metodu, která v mnoha případech nemá smysl. Od objektu Object dědí všechny objekty. Pak můžu metodu destroy volat nad každým objektem, nad pole, nad řetězcem, nad funkcí, ... a všude kromě objektu HTMLElement způsobí chybu protože vlastnost parentNode neexistuje!

Správné řešení by bylo rozšířit HTMLElement, to ale nefunguje v IE. Je lepší tento způsob nepoužívat.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0