Autor | Zpráva | ||
---|---|---|---|
Louka Profil |
#1 · Zasláno: 21. 7. 2008, 16:13:28
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 |
#2 · Zasláno: 21. 7. 2008, 16:48:16 · Upravil/a: Nox
|
||
peta Profil |
#3 · Zasláno: 21. 7. 2008, 19:43:31 · Upravil/a: peta
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 = ''; |
||
Časová prodleva: 21 dní
|
|||
Anonymní návštěvník Profil * |
#4 · Zasláno: 11. 8. 2008, 09:09:29
Louka:
Destroy pro odstranění objektu? Skvělý nápad, díky! Object.prototype.destroy = function(){return this.parentNode.removeChild(this);} |
||
Časová prodleva: 8 dní
|
|||
Chamurappi Profil |
#5 · Zasláno: 19. 8. 2008, 12:40:08
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 |
#6 · Zasláno: 19. 8. 2008, 14:28:08
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. |
||
Časová prodleva: 16 let
|
0