Oulà ! Ne pas confondre tableau HTML et array ( qui est traduit par "tableau" en français, ce que je trouve pas terrible ).
Bon, vu que tu ne donne pas de code, je vais essayer de raisonner "à l'aveugle". Tu as donc un tableau HTML, contenant plusieurs lignes ( <tr> ) qui elles-mêmes contiennent une ( ou plusieurs ) cellules ( <td> ) qui elles-mêmes contiennent un select. Et donc quand l'utilisateur choisit une option de ce select, tu veux savoir à quelle ligne de tableau ça se passe ?
Pour moi, le plus simple consisterait à donner un attribut ( par exemple "lineNumber" ) à tes <tr>, qui aurait pour valeur le numéro de la ligne ( la première <tr> serait donc <tr lineNumber=1>, etc.
Ensuite, il faut ajouter un eventListener sur ta balise select :
document.getElementsByClassName('mesSelects').addEventListener('change', function(event) {
var numeroDeLigne = event.target.parentElement.getAttribute('lineNumber');
console.log(numeroDeLigne);
};
Grosse erreur de ma part dans le petit bout de code ci-dessus, que j'ai fait à la volée.
getElementsByTagName() va te renvoyer un array d'éléments HTML. Donc il faut boucler dessus pour ajouter les eventListeners à tous les éléments de ce array.
Petit exemple plus concret et fonctionnel que j'ai testé avant de le publier, cette fois :
var cells = document.getElementsByClassName('cells');
for(var cell of cells)
{
//console.log(cell);
cell.addEventListener('click', function(event) {
console.log(event.target.parentElement.getAttribute('lineNumber'));
});
}
Voilà, en gros la callback de l'eventListener reçoit automatiquement le paramètre event, grâce auquel tu peux accéder à l'event.target, à savoir l'élément qui a reçu l'évènement ( celui sur lequel on cliqué ). De là je remonte à l'élément parent ( parentElement ), puis à la valeur de son attribut 'lineNumber'. Alors y'a probablement moyen de se passer de l'attribut lineNumber, en comptant le nombre d'éléments enfants de l'élément parents qu'il y a avant l'élément parent de l'élément qui a provoqué l'évènement, mais bon, tu vois bien qu'à définir ça fait un peu tortueux, donc perso j'ai pas envie de me lancer là dedans
Donc je sais pas si ton tableau est construit de manière dynamique ( genre pour chaque objet "client" récupéré depuis une requête vers la bdd, construire une nouvelle ligne de tableau, y insérer une case "nom du client", une case "mail du client", puis une case "choix du client" contenant ta select ) il suffit d'ajouter l'eventListener au passage, et le tour est joué.
Récupération de l'indice d'un tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
JCninho87