removeNode или как удалить строку из таблицы HTML на JavaScript в Mozilla

anpv

Guest
removeNode или как удалить строку из таблицы HTML на JavaScript в Mozilla

Доброго времени суток.
PHP:
<html>
<body>
<table>
<tr>
<td>1</td>
<td><input type="button" value="Удалить" onclick="this.parentNode.parentNode.removeNode(true)"></td>
</tr>
</table>
</body>
</html>
в Mozilla FireFox 1.0 вызывает ошибку:
this.parentNode.parentNode.removeNode is not a function
В IE все работает нормально.
А если так: this.parentNode.parentNode.innerHTML = '';
то остается пустое место элемента TR (1-2 пиксельная строка).
Подскажите как решить эту проблему кроссбраузерно.
 

MiRacLe

просто Чудо
removeChild ?

P.S. в FF есть DOM Inspector, полезная штука - помогает решать подобные вопросы
 

anpv

Guest
Вроде разобрался.
removeNode - чисто IE - шная штука.
PHP:
<html>
<head>
<script type="text/javascript">
function removeTRow(node) {
  var ppnode = node.parentNode.parentNode;
  var pppnode = ppnode.parentNode;
  pppnode.removeChild(ppnode);
}
</script>
</head>
<body>
<table>
<tr>
<td>1</td>
<td><input type="button" value="Удалить" onclick="removeTRow(this)"></td>
</tr>
</table>
</body>
</html>
-~{}~ 24.02.05 18:24:

Но пустое место элемента TR (1-2 пиксельная строка) после удаления всетаки остается.
Как с этим бороться?

-~{}~ 25.02.05 13:27:

Следующий код вызывает "Неизвестная ошибка выполнения" в IE, в Mozilla все Ok.
PHP:
<html>
<head>
<script type="text/javascript">
function removeTR(node)
{
  var ppnode = node.parentNode.parentNode;
  var pppnode = ppnode.parentNode;
  for (i = 0; i < ppnode.childNodes.length; i++)
    ppnode.removeChild(ppnode.childNodes[i]);
  pppnode.removeChild(ppnode);
}
function addTR()
{
  var objt = document.getElementById('t1');
  for (i = 0; i < objt.childNodes.length && objt.childNodes[i].tagName != 'TBODY'; i++);
  objt.childNodes[i].innerHTML += '<tr bgcolor="#C6D7C6"><td>1</td><td><input type="button" value="-" onclick="removeTR(this)"></td></tr>';
}
</script>
</head>
<body>
<input type="button" value="+" onclick="addTR()">
<table id="t1">
<tr bgcolor="#C6D7C6">
<th>Название</th>
<th>Тип</th>
</tr>
</table>
</body>
</html>
Подскажите где кроется ошибка?

-~{}~ 25.02.05 15:30:

А ошибка крылась в том что у TBODY innerHTML readonly.
Надо так:
PHP:
function addTR()
{
  var tb = document.getElementById("t1").getElementsByTagName("TBODY")[0];
  var newrow = tb.insertRow(-1);
  newrow.bgColor = '#C6D7C6';
  var newcell = newrow.insertCell(-1);
  newcell.innerHTML = '1';
  var newcell = newrow.insertCell(-1);
  newcell.innerHTML = '2';
}
 
Сверху