Explicatie despre childNodes

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
Avatar utilizator
steell
Mesaje:190

Explicatie despre childNodes

salut marplo. la pagina Lucrul cu getElementById , la partea cu childNodes, sub codul acela sursa este explicatia codului, insa nu cred ca este corecta ori nu am inteles-o eu.
In sursa este asa:

Cod: Selectaţi tot

<div id="ex2">Un text oarecare - <span>JavaScript in span</span> - alt text</div>

<script type="text/javascript">
<!--
function test2() {
    var val2 = document.getElementById("ex2").childNodes[1].childNodes[0].nodeValue;
    alert(val2);
}
//-->
</script>
Iar la explicatia spune ca se prea valoarea primului element din elementul 2 din DIV-ul #ex2; insa in DIV este doar un element si anume <span>. nu ar fi trebuit sa arate cam asa?

Cod: Selectaţi tot

<div id="ex2">
<span>primul element</span>
<p>
    <span>primul sub element</span>
     <span>al doilea sub element</span>
</p> 
alt text care nu este in niciun element</div>
Deci codul ar trebui sa arate in alert() "primul sub element". Desi asa pare logic (pentru mine) am vazut ca totusi nu functioneaza cum cred eu ca ar trebui sa functioneze. Poti sa oferi o alta explicatie?

MarPlo Mesaje:4343
Sallut
Explicatia e ca si textul din tag e considerat element /obiect copil in acel tag.
De exemplu, in acest cod HTML:

Cod: Selectaţi tot

<div id="ex2"> - <span>JavaScript in span</span> - alt text</div>
In DIV sunt 3 elemente /obiecte copil distincte recunoscute de childNodes.
- Primul element in #ex2 e textul pana la <span>, adica, document.getElementById("ex2").childNodes[0].nodeValue; va returna: " - ".
- Al doilea element /oboect e tag-ul <span> cu tot ce e in el.
- Al treilea element este textul de dupa </span>, adica, document.getElementById("ex2").childNodes[2].nodeValue; va returna: " - alt text".

Asa se lucreaza cu obiecte si elemente copil in DOM; textul fiind si el considerat un obiect.