Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает replaceChild (https://javascript.ru/forum/dom-window/31380-ne-rabotaet-replacechild.html)

stereomaniac1 05.09.2012 15:54

Не работает replaceChild
 
Добрый день.

Имеется таблица вида
<tr>
<td>
<p>565</p>
</td>
</tr>

<tr>
<td>
<p>120</p>
</td>
</tr>
</table>


Мне необходимо в ячеках удалить тег абзаца, но оставить его содержимое. Т.е. чтобы в итоге получить следующее:
<body>
<tr>
<td>
565
</td>
</tr>

<tr>
<td>
120
</td>
</tr>
</table>
</body>


Пишу следующий код:
var table = document.body.children[0];
var tdList = table.getElementsByTagName('td');
 
  for (var i=0; i<tdList.length; i++) {
    var tdElem = tdList[i]; 
    tdElemPHtml = tdList[i].children[0].innerHTML;
    tdElem.replaceChild(tdElemPHtml, tdList[i].children[0]);
  }


Браузер выдаёт ошибку: NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIDOMHTMLTableCellElement.replaceChild]

Что я неправильно делаю?

lord2kim 05.09.2012 16:04

stereomaniac1,
<html>
<head>
<style>
p { color: red; }
</style>
<script>
function a() {
var table = document.body.children[0];
var tdList = table.getElementsByTagName('td');
  
  for (var i=0; i<tdList.length; i++) {
    text = tdList[i].children[0].innerHTML;
    tdList[i].replaceChild(document.createTextNode(text), tdList[i].children[0]);
  }  alert(table.innerHTML);
}
</script>
</head>
<body>
<table>
<tr>
<td>
<p>565</p>
</td>
</tr>
 
<tr>
<td>
<p>120</p>
</td>
</tr>
</table>
<input type="button" value="Click" onClick="a()">
</body>
</html>

stereomaniac1 05.09.2012 16:13

lord2kim, большое спасибо! Совсем забыл про createTextNode


Часовой пояс GMT +3, время: 10:40.