ugrás a tartalomhoz

Furfangos childNodes

zoliky · 2008. Május. 22. (Cs), 16.42
Van egy HTML kod:
<ul id="zoli">
  <li>Alec</li>
  <li>Daniel</li>
  <li>William</li>
  <li>Stephen</li>
</ul>
Azt tudom, hogy az "UL" elemnek van 4 gyereke. A Javascript kod:
var ulElem = document.getElementById("zoli");

ulElem.childNodes[0]; // Alec
ulElem.childNodes[1]; // Daniel
ulElem.childNodes[2]; // William
ulElem.childNodes[3]; // Stephen
Ha modositom a HTML kodot igy:
<ul id="zoli">
  <li>Alec
          <li>Sub child</li>
  </li>
  <li>Daniel</li>
  <li>William</li>
  <li>Stephen</li>
</ul>
Az UL-nek ebben az esetben is csak 4 gyereke van, igaz? En ugy gondolom, hogy a "Sub child" nem az UL gyereke hanem annak a LI elemnek a gyereke amelyben benne van, igaz?

Koszi!
 
1

furfangos hülyeség

gex · 2008. Május. 22. (Cs), 16.56
mivel nem valid a html, ezért minden böngésző úgy értelmezi, ahogy akarja. helyesen így lenne:

<ul id="zoli">
    <li>
        Alec
        <ul>
            <li>Sub child</li>
        </ul>
    </li>
    <li>Daniel</li>
    <li>William</li>
    <li>Stephen</li>
</ul>  
3

ok

zoliky · 2008. Május. 22. (Cs), 17.13
Sajnalom, hogy szamodra hujeseg de engemet erdekel a dolog.
Szoval azt akartam tudni, hogy a masodik UL (amelynek nincs ID-je) az is az elso UL gyereke.
6

off

gex · 2008. Május. 22. (Cs), 17.34
nem a kérdésre írtam, hogy hülyeség, hanem a példádra.
7

Félreérted

zila · 2008. Május. 22. (Cs), 17.38
Nem a probléma hülyeség, hanem az <ul> nélküli <li> elemre alapozott kísérlet. Építsd fel a html-t érvényes módon, és azon vizsgáld a dolgot.

Fenti példában a beágyazott UL természetesen annak a LI-nek lesz a gyereke amelyikbe beágyaztad. (Legalábbis firefox-ban biztos, abban néztem meg...)
2

textNode

Jano · 2008. Május. 22. (Cs), 17.12
Valid kód után se biztos, hogy az 4 li után 4 gyerek lesz, mert a kódban lévő white-space karakterek is benne lesznek egyes böngészőkben a childNodes tömbben!
4

nodeType

zoliky · 2008. Május. 22. (Cs), 17.14
Es ezt mivel lehet leelenorizni, nodeType ?
Peldaul ki akarom hagyni a TextNode-kat:

if (element.nodeType == 1)
{
  // kod
}
Helyesen gondoltam ki a kodot ?
5

nodeType vagy kódtisztítás

gex · 2008. Május. 22. (Cs), 17.33
igen, a nodeType megmondja, hogy mivel van dolgod, vagy azt ellenőrizgeted, vagy van olyan lehetőséged is, hogy kitakarítod a whitespace karaktereket, például a prototype cleanWhitespace metódusával.

szerk: google itt is segített volna természetesen: http://www.javascriptkit.com/domref/nodetype.shtml
8

kosz

zoliky · 2008. Május. 22. (Cs), 17.45
Ok, koszonom!