2012-03-24 11 views
7

Dlaczego następujący powrót zwraca 0?getElementsByTagName w elemencie javascript

<p id="g"> 
<div>kk</div> 
<div>ee</div> 
<div>jff</div> 
</p> 


    <script type="text/javascript"> 
    var ii = document.getElementById("g"); 
    var hh = ii.getElementsByTagName('div'); 
    document.write(hh.length); 
    </script> 

Odpowiedz

12

Ponieważ nie można mieć <div> w <p>. Akapity mogą mieć tylko inline elements jako dzieci.

Gdy tylko analizator składni napotka na <div>, automatycznie zamyka się <p>.

Porównaj

<p id="g"> 
    <span>kk</span> 
    <div>ee</div> 
    <div>jff</div> 
</p> 

<script type="text/javascript"> 
    var ii = document.getElementById("g"); 
    var hh = ii.getElementsByTagName('span'); 
    alert(hh.length); 
</script>​ 
+1

wow, thx dużo! –

Powiązane problemy