bonjour,
le souci est au niveau de la focntion suppression :
1 2
|
document.getElementById('tableau').deleteRow(-1); |
tu effaces toujours la dernière ligne.
Voici ton code corrigé (en vert mes corrections et j'ai mis en bleu et en commentaires le code d'origine
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
<html>
<head>
<script type="text/javascript">
<!--
function ajoutLigne()
{
//num = 0;
var Cell;
var nom = document.forms["formulaire"].nom.value;
var prenom = document.forms["formulaire"].prenom.value;
var tableau = document.getElementById('tableau');
var ligne = tableau.insertRow(-1);
Cell = ligne.insertCell(0);
//Cell.innerHTML = num + 1;
Cell.innerHTML = ligne.rowIndex;
Cell = ligne.insertCell(1);
Cell.innerHTML = nom;
Cell = ligne.insertCell(2);
Cell.innerHTML = prenom;
Cell = ligne.insertCell(3);
//Cell.innerHTML = ("<input type=button name=supprimer value=Supprimer onclick=suppression()>");
var bouton = document.createElement("input");
bouton.type = "button";
bouton.value = "Supprimer";
bouton.onclick = function(){suppression(ligne)};
Cell.appendChild(bouton);
document.forms["formulaire"].nom.value = "";
document.forms["formulaire"].prenom.value = "";
}
function suppression(ligne)
{
//var nb = document.getElementById('tableau').rows.length;
//document.getElementById('tableau').deleteRow(-1);
document.getElementById('tableau').deleteRow(ligne.rowIndex);
//Recomptage des lignes...
var tableau = document.getElementById('tableau');
var trs = tableau.rows;
var n = trs.length;
var i;
for (i=1; i<n; i++) //on commence à 1 et non à 0 ;)
{
trs[i].cells[0].innerHTML = trs[i].rowIndex;
}
}
//-->
</script>
</script>
</head>
<body>
<form name="formulaire">
Nom <input type="text" name="nom"><br>
Prenom <input type="text" name="prenom"><br>
<table name= "tableau" id="tableau" border="1">
<tr>
<td>Numéro de ligne</td>
<td>Nom</td>
<td>Prenom</td>
<td>Supprimer la ligne</td>
</tr>
</table>
</form>
<div><input type="button" value="Ajouter une ligne" onclick="ajoutLigne()" ></div> <br>
</body>
</html> |
- j'ai modifié le nom de la fonction ligne() en ajoutLigne() pour éviter la confusion avec la variable ligne

- j'ai remplacé le bouton de type "submit" (sans intéret ici) par un bouton de type "button".
- à chaque suppression de ligne je mets à jour l'indice des lignes (fonction suppression() )
- le code fonctionne sous IE et Firefox
Remarques :
Remplace le paramètre name au profit du paramètre id, l'accès aux éléments sera ainsi plus facile. Par exemple :
1 2
|
Prenom <input type="text" id="prenom"> |
1 2
|
var prenom = document.getElementById("prenom").value; |
cela évite les
var prenom = document.forms["formulaire"].prenom.value;
Partager