Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zasto HTML DOM brise node iz xml-a???

[es] :: Javascript i AJAX :: Zasto HTML DOM brise node iz xml-a???

[ Pregleda: 1882 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.dynamic.isp.telekom.rs.



+4 Profil

icon Zasto HTML DOM brise node iz xml-a???20.09.2010. u 13:03 - pre 165 meseci
Nije mi jasno zasto se DOM i addChild() ponasaju ovako:

Pseudo code:
Code:
var xml=loadDoc("filename");

nodes=xml.getElementsByTagName('tag');

node=searchById(nodes, 'id');  // for, childNodes,  attrib id == id...
//Prakticno node = getElementById(id);

var div document.getElementById('ekran');

div.addChild(node); // sve super, prikaze node

div.innerHtml="";  // odlicno, obrise node iz div ekrana, div bude prazan

I onda ide nebuloza:

node=searchById(nodes, 'id');  // node = null;
nodes.length == prethodna vrednost -1
Kakve veze ima HTML DOM sa ucitanim xml fajlom?
Sta tacno radi addChild()?
Sta tacno radi removeChild()?
Kako je div.innerHTML="" === xml.removeChild() ???
Gde gresim?


Na kraju sam "resio" problem ovako:
Code:
var x=node.cloneNode(true);
div.addChild(x);
Ali mi i dalje nije jasno kako i zasto bilo sta radjeno na document.body... moze da menja xml ???

Koji je onda pravilan nacin za prilazivanje i sklanjanje noda iz <div>???



I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
212.200.231.*



+8 Profil

icon Re: Zasto HTML DOM brise node iz xml-a???20.09.2010. u 13:51 - pre 165 meseci
Davno sam radio nešto slično i koliko se sećam kad menjaš innerHtml browser odmah parsira tvoj HTML i menja DOM. Tako da ako staviš prazan string u innerHtml to je isto kao da si uklonio čvor sa RemoveNode(). Tada sam čitao i da nije dobro mešati ta dva načina, već treba uvek koristiti DOM traversal metode.

AddChild() samo dodaje child node roditelju, tj. child node dobija novog roditelja. Ako obrišeš taj node, on nestaje iz stabla. AddChild() ne klonira node koji dodaješ.

Ako samo treba da sakriješ node, postavi mu visibility na hidden (node.style.visibility = 'hidden').

 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Zasto HTML DOM brise node iz xml-a???20.09.2010. u 16:33 - pre 165 meseci
Citat:
Davno sam radio nešto slično i koliko se sećam kad menjaš innerHtml browser odmah parsira tvoj HTML i menja DOM.
To mi je skroz jasno. To i zelim da se desi za HTML.

Ali mi nije jasno kako i zasto bilo kakvo brisanje u HTML DOM utice na xml node ucitan iz fajla?
Kao da addChild nekako spoji html i xml fajl. Zasto i kako se to desava?

Citat:
AddChild() samo dodaje child node roditelju, tj. child node dobija novog roditelja. Ako obrišeš taj node, on nestaje iz stabla. AddChild() ne klonira node koji dodaješ.
Hoces da kazes da kad nadjem node sa getElementsByTagName() i taj node uguram u neko DOM stablo sa addChild(node) on automatski iscupa taj node iz originalnog stabla???
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.dynamic.sbb.rs.



+8 Profil

icon Re: Zasto HTML DOM brise node iz xml-a???20.09.2010. u 17:04 - pre 165 meseci
Pa da, AddChild() ne klonira čvor, ti stalno radiš sa istim čvorom. Tako da ga ti premeštaš iz jednog stabla u drugo.

Kažem ti, davno sam radio, ali nema mi mnogo smisla da se ponaša na jedan način ako radiš sa jednim stablom, a drugačije ako radiš sa XML stablom. Šta ti vraća loadDoc() metoda?
 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Zasto HTML DOM brise node iz xml-a???20.09.2010. u 18:03 - pre 165 meseci
U lave, ovo bas nisam znao! Da potvrdim da sam dobro shvatio:

Code:
var nodes = xml.getElementsByTagName(tag);    // vraca NodeList objekat.

var node = nodes[0];    // izvucem node koji mi je potreban.

node;    //  je shortcut na node koji se i dalje nalazi u xml!!!
Mogu da saznam .nodeType .NodeValue .parentNode i ostalo.
I u tom slucaju parentNode mi daje parent iz xml.

Cool...


Ali ako uradim document.body.addChild(node); node je usao u html body. I automatski je uradjen xml.removeChild(node). Kao list koji otkines sa jednog drveta i nakalemis ga na drugo?
I parentNode bi bio div... Ok, testiram.
Citat:
edit:
Node lociran pomocu getElementByTagName iz xml-a
XML parent: [object Element]

Posto je node ubacen u html DOM sa addChld(node)
HTML parent: [object HTMLDivElement]

I dalje mi je cudno sto addChild cupa nodove iz originalnog stabla, ali sad kad znam za foru, cloneNode() cu mnogo vise upotrebljavati.




div.innerHTML=""; sam koristio za brisanje svega iz div-a.
Deluje mi mnogo brze i jednostavnije nego while(hasChildren)(.removeChild(..)). Prakticno, to je jedino mesto gde koristim innerHTML.


loadDoc(filename) vraca root node iz xml fajla. root node, sa svom decom naravno. preuzeo sam je sa w3schools.com

[Ovu poruku je menjao MilosDj dana 20.09.2010. u 19:56 GMT+1]
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

[es] :: Javascript i AJAX :: Zasto HTML DOM brise node iz xml-a???

[ Pregleda: 1882 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.