LINUX.ORG.RU

[JS + HTML] выводит &_lt;br&_gt вместо <br> ???


0

1

Доброго времени суток, проблема такова: Получаю из XUL элемента текст и добавляюего в ветку <body> документа, предварительно обрамив этот текст тегом <div>. Также в тексте я заменяю все сиволы новой строки на тег <br>, но почему-то на странице, переноса текста не получается, вмесо этого тег отображается вместе с основным текстом(например aaa<br>bbb). Еслиже смотреть через .innerHTML то он выводит вместо <br> - &_lt;br&_gt;(подчёркивания убрать) Чего поделать, чтобы на странице нормально переносился текст?

Пытался прямо в коде html странички прописать:

<body>
<div>
    aaa<br>bbb
<div>
</body>
Всё отображается отлично, с переносом

Вот код моей небольшой функции:

function sendMessage() {
	var mb = document.getElementById("tb-message")
	var text = mb.value
	var html = document.getElementById("iframe").contentDocument
	
	if(text.length > 0) {
		text = text.replace("\n", "<br>");
		var div = html.createElement("div");
		var text = html.createTextNode(text)
		
		div.appendChild(text);
		html.body.appendChild(div)

		alert( div.innerHTML); // вот здесь вместо тега <br> выводится &_lt;br&_gt; почему-то
	}
}
★★★★★

Наверное потому что нет ; в конце некоторых строк.
А если серъёзно, то вставляй html через html, а не createTextNode.

impr
()

Enjoy:

<!DOCTYPE html>
<html>
<body>
    <div id="meow">
        line1
        line2
    </div>    
    <script>
        var div = document.getElementById("meow");
        div.innerHTML = div.innerHTML.replace(/\n/g, '<br>');
    </script>
</body>
</html>

anonymous
()
Ответ на: комментарий от anonymous

Всё гениальное просто, добавил в конец функции(подчёркивания опять же убрать):

div.innerHTML = div.innerHTML.replace("&_lt;br&_gt;", '<br>');

Помогло. Наверно это костыль... :)

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Блин, помогло, но это работает почему-то только для двух линий строк, если их больше, то на второй строке опять последоватеьно их собирает... эх, я то уж надеялся... (

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Всё, решил, нужно в фунции убрать :

text = text.replace(/\n/g, "<br>");
и добавить в конец:
div.innerHTML = div.innerHTML.replace(/\n/g, '<br>');

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Твой код можно переписать как:

function sendMessage() {
	var mb = document.getElementById("tb-message");
	var text = mb.value;
	var html = document.getElementById("iframe").contentDocument;
	
	if (text.length > 0) {
		var div = html.createElement("div");
		div.innerHTML = text.replace(/\n/g, '<br>');
		html.body.appendChild(div);
	}
}

anonymous
()
Ответ на: комментарий от anonymous

Благодарствую, так короче и лаконичней )

xterro ★★★★★
() автор топика

Text node это текст, товарищ :}

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.