Bonjour
J'essaie de comprendre comment fonctionne le DOM (je suis sous FF en xhtml strict).
Pour cela j'ai tout simplement écrit ce qui suit
puis en JS
Le résultat est surprenant. Dans cette configuration, le tableau a 3 enfants : un teste, tbody et 1 text (!!)
mais si j'écris <table id="tab"><tbody> sur la même ligne alors le tableau n'a plus que 2 enfants : tbody et un texte.
Est ce normal ? Si non où est mon erreur ?
Merci par avance[/i][/i][/i][/i][/i][/i]
Modifié par coucou (26 Jan 2007 - 18:36)
J'essaie de comprendre comment fonctionne le DOM (je suis sous FF en xhtml strict).
Pour cela j'ai tout simplement écrit ce qui suit
<table id="tab">
<tbody>
<tr>
<td>Ligne 0 Cellule 0</td>
<td>Ligne 0 Cellule 1</td>
</tr>
<tr>
<td>Ligne 1 Cellule 0</td>
<td>Ligne 1 Cellule 1</td>
</tr>
<tr>
<td>Ligne 2 Cellule 0</td>
<td>Ligne 2 Cellule 1</td>
</tr></tbody>
</table>
puis en JS
var tableau = document.getElementById("tab");
if (tableau.hasChildNodes()){
tr = tableau.childNodes;
alert("le noeud tableau a "+tr.length+" enfants");
for (i=0; i < tr.length; i++){
alert("enfant "+i+" " +tr[i].nodeType+" "+tr[i].nodeName);
if (tr[i].nodeType==3) alert("donnees "+tr[i].nodeValue);
if (tr[i].hasChildNodes()){
enfant = tr[i].childNodes;
alert("le noeud enfant a "+enfant.length+" enfants");
}
else
alert("pas d enfants");
}
}
else
alert("hello");
Le résultat est surprenant. Dans cette configuration, le tableau a 3 enfants : un teste, tbody et 1 text (!!)
mais si j'écris <table id="tab"><tbody> sur la même ligne alors le tableau n'a plus que 2 enfants : tbody et un texte.
Est ce normal ? Si non où est mon erreur ?
Merci par avance[/i][/i][/i][/i][/i][/i]
Modifié par coucou (26 Jan 2007 - 18:36)
Même si c'est plus pratique, il faut tout de même considérer les espaces, tabulations et retour chariots, sachant que leur comportement est défini et bien particulier. Maintenant si tu veux itérer dans un élément, le mieux est de tester le type d'enfant, si c'est un bien un HTMLElement par exemple, alors ça roule.