Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление дочерних элементов (https://javascript.ru/forum/events/54192-udalenie-dochernikh-ehlementov.html)

Ramundo 07.03.2015 22:14

Удаление дочерних элементов
 
Есть вот такой HTML:
<p id = "id1">текст1 <p>текст2</p> </p>


И есть "функция":
function replaceNodeText(id, newText){
node = document.getElementById(id);
while (node.lastChild){
	node.removeChild(node.lastChild);
	}
node.appendChild(document.createTextNode(newText));
}
//вызываю
replaceNodeText("id1", "Новый текст");


В результате вместо ожидаемого
<p id = "id1">Новый текст</p>

получается
<p id = "id1">Новый текст <p>текст2</p> </p>
.

Дело вроде в неправильном HTML, но в чем именно?

рони 07.03.2015 22:57

Цитата:

Сообщение от Ramundo
Есть вот такой HTML:
<p id = "id1">текст1 <p>текст2</p> </p>

нет у вас такого HTML в этом и вся проблема

рони 07.03.2015 23:03

Ramundo, что на самом деле в браузере
<p id="id1">текст1 </p>
<p>текст2</p>
<p></p>

danik.js 08.03.2015 10:00

Цитата:

Сообщение от рони
Есть вот такой HTML:

<head>
<script>window.onload = function(){alert(document.body.innerHTML)}</script>
<body>
<p id = "id1">текст1 <p>текст2</p> </p>
</body>

рони 08.03.2015 10:11

danik.js,
твоё сообщение о чём и кому?

рони 08.03.2015 10:18

danik.js,

Ramundo 08.03.2015 10:18

Блин, че за дела? Вот ведь файл:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>JS Testing</title>
<center><h3>Сайт</h3></center>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p id = "id1">текст1 <p>текст2</p> </p>

<script type = 'text/javascript'>

function replaceNodeText(id, newText){
node = document.getElementById(id);
while (node.lastChild){
	node.removeChild(node.lastChild);
	}
node.appendChild(document.createTextNode(newText));
}
replaceNodeText("id1", "ololo");


 function removeChildren(id) {
	node = document.getElementById(id);
	     var children = node.childNodes;
 
	    for(var i=0;i<children.length; i++) {
        var child = children[i];
         
	        node.removeChild(child);
	    } 
 }
	//removeChildren("id1");
</script>

</body>
</html>

рони 08.03.2015 10:24

Ramundo,
ну нехотят браузеры в параграф параграфы вставлять

рони 08.03.2015 10:26

Ramundo,
и в таблицу div не хотят- это так на всякий

Ramundo 08.03.2015 10:31

Блин, надо же было проверить код именно на параграфах... Спасибо, и за div тоже:)


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