Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho o seguinte código bem simples que está me fazendo quebrar bastante a cabeça, vejam:
<html>
<body>
<div id="divId">
<p id="intro">Teste</p>
</div>
<script type="text/javascript">
x=document.getElementById("divId");
document.write(x.childNodes.length); //AQUI RETORNA 3, sendo 2 objetos #text e 1 objeto do paragrafo, pq retorna 3?? E quem sao os 2 objetos de #text????
</script>
</body>
</html>Não, ela tá voltando 3, no caso, vai de 0 a 2. Quem são os objetos #text? Já pesquisei sobre isso, mas a única coisa que eu sei que são campos de texto, por exemplo o node paragrafo tem um node independente de texto, mas nesse caso não faz muito sentido... Na minha concepção, só deveria ter 2 nodes dentro da div, 1 para o paragrafo e outro um obj do tipo #text da div talvez, não sei de onde tá vindo o terceiro.
São 4 sim!!!!
Tenta fazer assim:
<html>
<body>
<div id="divId">
</div>
<script type="text/javascript">
x=document.getElementById("divId");
x.appendChild(document.createTextNode("Teste"));
document.write(x.childNodes.length); //AQUI RETORNA 2, sendo de 0 a 2 ( <div> </div> Texto(sem formatação) ).
</script>
</body>
</html>Não são 4, são 3(aliás, isso é relativo). Descobri o erro, o javascript considera espaço ou break como objetos do tipo #text, aliás, o browser firefox que funciona desse jeito, talvez o teu browser por ser diferente(talvez) considere de outra forma, por isso que teu resultado deu diferente do meu.
Na verdade ele ta voltando 4! (começa a contar do 0) e são eles <div>; </div>; <p>; </p>!