11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je souhaite récupérer des cellules d'une ligne d'un tableau
pour connaitre leur valeur, mais aussi diverses informations (id, couleur...)

Donc avec le tableau HTML 'table' dont je veut connaitre les infos de la ligne 'numLigne',
J'ai essayé ce code :


//Sélectionne toutes les balises tr du tableau :
var lignes = document.getElementById('table').getElementsByTagName ("tr");

// Sélectionn la ligne
var Maligne = lignes [ numLigne];

// Sélectionne les cellules
var TD  = document.getElementsByTagName ('TD');


et ben ça marche pas sous FF

Pourtant comme ça, ça a l'air de marcher
var TD = document.getElementsByTagName ('TD');


Ou alors faut utiliser ça ?
 var TD = Maligne.childNodes;


J'ai cherché expérimenté sans trouver de solutions
ce qui semble pourtant une question assez banale


Merci d'avance....

PierrHaut
Tu peux faire un

var TD=Maligne.getElementsByTagName("TD");


Attention aussi aux majuscules/minuscules... si ton document est en XML, il n'y a pas d'élément TD mais des éléments td, et ce sont du point de vue du DOM deux éléments différents.
Et bien non ta solution ne marche pas, pourtant ça a l"air évident.
Mais Je me suis un peu emmélé les pinceaux.
Voici la vraie question :

NE FONCTIONNE PAS
var aTR =document.getElementById("table").getElementsByTagName("TR");
var Maligne = aTR [1];
var MalCell = aTR.getElementsByTagName("TD");

FONCTIONNE
var MesCells  = document.getElementsByTagName("TD");
var MalCell = MesCells[1];



Après inspiration je crois que j'ai trouvé, mais je veut bien des explications, parce que j'ai rien trouvé de précis sur le sujet.

FONCTIONNE SOUS IE et FF
var aTR =document.getElementById("table").getElementsByTagName("TR");
var Maligne = aTR [1];
var Macell = Maligne.childNodes [1];
alert ("Macell" + Macell.innerHTML);
alert ( Macell.getAttribute ('name'));
Bonjour
Pierre (o) a écrit :
Bonjour,

Je souhaite récupérer des cellules d'une ligne d'un tableau
pour connaitre leur valeur, mais aussi diverses informations (id, couleur...)

Donc avec le tableau HTML 'table' dont je veut connaitre les infos de la ligne 'numLigne',
J'ai essayé ce code :


//Sélectionne toutes les balises tr du tableau :
var lignes = document.getElementById('table').getElementsByTagName ("tr");

// Sélectionn la ligne
var Maligne = lignes [ numLigne];


Jusque la c'est bon, mais :

// Sélectionne une cellule d'une ligne
var Macell  = Maligne.getElementsByTagName ('TD')[1];

est préférable à
var Macell = Maligne.childNodes [1];

car les cellules peuvent contenir un ou plusieurs noeuds et si il elles ont plusieurs lignes, le caractère de fin de ligne est traduit par un noeud #text sur la plupart des navigateurs sauf IE. Smiley cligne
Modifié par chmel (29 Oct 2007 - 00:33)
En effet, c'est plus simple pour
//première ligne, deuxième cellule
document.getElementById('table').rows[0].cells[1]

mais a quoi corresponds
x.tBodies[0].
?
En effet ça marche nickel ...
Mais c'est assez empirique en particulier les diffférences de fonctionnement selon les navigateurs.

Parce que ma solution est pas très loin :
var MesCells  = document.getElementsByTagName("TD");
var MalCell = MesCells[1];


mais ne fonctionne que sous IE

Où c'est qu'on trouve un doc/book/site décrivant de manière le plus exhaustive, l'accès au DOM en javascript ?