Trouver le numéro d'une ligne

Résolu
canyata Messages postés 6 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 9 novembre 2010 - 9 nov. 2010 à 15:50
canyata Messages postés 6 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 9 novembre 2010 - 9 nov. 2010 à 16:20
Salut à tous, j'ai un petit soucis :)

J'ai un tableau en html/php:

echo"\";
echo"
";


Grace au javacript, j'arrive lorsque l'on clic sur un bouton à ajouter a ce tableau le choix contenu dans une listebox:

function ajouter_Technicien(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if(xhr.readyState 4 && xhr.status 200){
            leselect = xhr.responseText;// la y a le nom du technicien 
            // On se sert de innerHTML pour rajouter les options a la liste
            ajouterLigne(leselect, idtechnicien);
        }
    }
    // Ici on va voir comment faire du post
    xhr.open("POST","vue/ajaxTechnicien.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    sel = document.getElementById('technicien_affecte');
    idtechnicien = sel.options[sel.selectedIndex].value;
    if( idtechnicien == -1 ){
        alert("Choisissez un technicien valable");
    }else{
        xhr.send("ID_TECHNICIEN="+idtechnicien);
    }
}


Une fois que dans leselect est contenu le nom de mon technicien grace a l'AJAX, je passe dans les paramètres d'une nouvelle fonction ajouterLigne fonction le nom et l'id de mon technicien.

(Dans cette partie du code, si sur chaque ligne sont répété les paramètres de largeur de cellule, c'est qu'au début je n'ai aucune cellule.)

function ajouterLigne(nom, id)
{
    tableau = document.getElementById("tab_tech");
    var ligne = tableau.insertRow(-1);//on a ajouté une ligne
    var colonne1 = ligne.insertCell(0);//on a une ajouté une cellule
    colonne1.setAttribute('width', '28px');
    colonne1.innerHTML += ""; //onclick='alert(this.parentNode.rowIndex);' est censé me dire le numero de la ligne ou est l'image
    colonne1.innerHTML += "";
    colonne1.innerHTML += "";

    var colonne2 = ligne.insertCell(1);//on ajoute la seconde cellule
    colonne2.setAttribute('width', '235px');
    colonne2.innerHTML += nom;

    var colonne3 = ligne.insertCell(2);//on ajoute la troisieme cellule
    colonne3.setAttribute('width', '22px');
    colonne3.setAttribute('align', 'right');
    colonne3.innerHTML += "";
}



Lorsque je clic donc sur la première image dans mon tableau qui est dans la premiere colonne de chaque ligne, l'alert(this.parentNode.rowIndex) devrait me retourner le numéro de la ligne d'où l'image a été clické.

Cependant lorsque je clique sur cette image, l'alert me retourne "undefined".

Ce retour me pose un problème car j'ai la fonction supprimerLigne qui me permet de supprimer une ligne du tableau en fonction de son indice qui n'arrive pas a trouver la ligne qu'elle doit supprimer.

function supprimerLigne(num)
{
    document.getElementById("tab_tech").deleteRow(num);
    modifier_Liste_Technicien();
}


Et donc, lorsque j'ai plusieurs éléments dans le tableau, si je supprime le dernier, la fonction prenant en paramètre undefined me supprime la première ligne.

Auriez-vous une astuce pour solutionner mon problème?

Est-ce que le this.parentNode.rowIndex est la bonne façon pour récuperer l'indice d'une ligne?

Merci d'avance

2 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
9 nov. 2010 à 15:57
Bien le bonjour, le problème, est relativement simple, l'image ce place dans une cellule, aussi this.parentNode va retourner la cellule, donc, le rowIndex n'existe pas, il existe mais sur la ligne (tr).
Du coup en remontant encore d'un cran (this.parentNode.parentNode.rowIndex), on retombe bien sur la ligne et il retourne l'index de celle-ci.


[o-_-o]
3
canyata Messages postés 6 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 9 novembre 2010
9 nov. 2010 à 16:20
Merci beaucoup :)
0
Rejoignez-nous