J'ai un petit problème. J'ai des tables créées dynamiquement et chaque ligne a un identifiant. Je veux supprimer la ligne avec l'id "x".
J'ai essayé la méthode habituelle (removeChild) mais cela ne fonctionne apparemment pas pour les tables.
function deleteRow(tableid, rowid)
{
document.getElementById(tableid).removeChild(document.getElementById(rowid));
}
L'erreur que je reçois est la suivante: le noeud n'a pas été trouvé "code:" 8
J'ai aussi essayé ceci:
function deleteRow(tbodyid, rowid)
{
document.getElementById(tbodyid).removeChild(document.getElementById(rowid));
}
et a la même erreur.
Je ne peux pas utiliser la méthode deleteRow()
car il faut l'index de la ligne et je préfère ne pas rechercher l'id, puis le supprimer (même si je ne trouve pas d'autres solutions ...).
Que diriez-vous:
function deleteRow(rowid)
{
var row = document.getElementById(rowid);
row.parentNode.removeChild(row);
}
Et, si cela échoue, cela devrait vraiment fonctionner:
function deleteRow(rowid)
{
var row = document.getElementById(rowid);
var table = row.parentNode;
while ( table && table.tagName != 'TABLE' )
table = table.parentNode;
if ( !table )
return;
table.deleteRow(row.rowIndex);
}
à Vilx-:
var table = row.parentNode;
while ( table && table.tagName != 'TABLE' )
table = table.parentNode;
et que se passe-t-il si row.parentNode
est TBODY
?
Vous devriez le vérifier en premier, et ensuitedo while
par .tBodies
, probablement
Depuis ce post , essayez ce javascript:
function removeRow(id) {
var tr = document.getElementById(id);
if (tr) {
if (tr.nodeName == 'TR') {
var tbl = tr; // Look up the hierarchy for TABLE
while (tbl != document && tbl.nodeName != 'TABLE') {
tbl = tbl.parentNode;
}
if (tbl && tbl.nodeName == 'TABLE') {
while (tr.hasChildNodes()) {
tr.removeChild( tr.lastChild );
}
tr.parentNode.removeChild( tr );
}
} else {
alert( 'Specified document element is not a TR. id=' + id );
}
} else {
alert( 'Specified document element is not found. id=' + id );
}
}
J'ai essayé ce javascript dans une page de test et cela a fonctionné pour moi dans Firefox.
Et que diriez-vous d'essayer de ne pas supprimer mais de cacher cette ligne?
Le parent de la ligne n'est pas l'objet que vous pensez, c'est ce que j'ai compris de l'erreur.
Essayez de détecter le parent de la ligne en premier, puis vous saurez quoi écrire dans la partie getElementById
du parent.
Quelque chose de rapide et sale:
<script type='text/javascript'>
function del_tr(remtr)
{
while((remtr.nodeName.toLowerCase())!='tr')
remtr = remtr.parentNode;
remtr.parentNode.removeChild(remtr);
}
function del_id(id)
{
del_tr(document.getElementById(id));
}
</script>
si vous placez
<a href='' onclick='del_tr(this);return false;'>x</a>
n'importe où dans la ligne que vous souhaitez supprimer, que même travailler sans identifiant