Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Изменить содержимое текстового узла (https://javascript.ru/forum/events/18336-izmenit-soderzhimoe-tekstovogo-uzla.html)

trikadin 27.06.2011 02:45

Изменить содержимое текстового узла
 
<div id="div">Text</div>
<script>
textNode= document.getElementById("div").firstChild;
textNode.nodeValue= '<b>' + textNode.nodeValue + '</b>'; // выведет "<b>Text</b>"
</script>


Как сделать так, чтобы текст был жирным, а не чтобы выводился тег?

Gvozd 27.06.2011 03:58

для того чтобы преобразовать HTML-строку в DOM-объекты, присвойте временному объекту DOM(создается при помощи document.createElement) свойство innerHTML, а затем перебрав все его childNodes поместите их в необходимое место, например с помощью appendChild

trikadin 27.06.2011 04:05

Спасибо, Gvozd)

Поясню. У меня есть объект. Мне нужно его вставить в определённое место текстового узла. Совсем не факт, что в начало. Как вставить в середину?

Причём заранее неизвестно, где элемент находится, есть ли у него сестринские элементы и т.д.

trikadin 27.06.2011 04:20

Мне пришло в голову это:

function(insertNode, textNode, insertPoint) {
 fr= document.createDocumentFragment();
 fr.appendChild(document.createTextNode(textNode.nodeValue.substr(0, insertPoint)); // вставляем первую часть текстового узла
 fr.appendChild(insertNode);// вставляем сам узел
 fr.appendChild(document.createTextNode(textNode.nodeValue.substr( insertPoint)) //вставляем вторую часть.
 textNode.parentNode.insertBefore(fr, textNode); // вставляем получившуюся хрень
 textNode.parendNode.removeChild(textNode);//удаляем исходный узел. Получилось, что мы заменили исходный текст на два текста с элементом между ними.


Короче можно?

Gvozd 27.06.2011 04:25

да, вроде особо короче и не сделаешь

trikadin 27.06.2011 04:31

Ясно... Ну ладно.

observer 14.11.2011 03:43

Цитата:

Сообщение от trikadin (Сообщение 110676)
<div id="div">Text</div>
<script>
textNode= document.getElementById("div").firstChild;
textNode.nodeValue= '<b>' + textNode.nodeValue + '</b>'; // выведет "<b>Text</b>"
</script>


Как сделать так, чтобы текст был жирным, а не чтобы выводился тег?

Об этом вы спрашивали в июне сего года.

Теперь вы профессор (или уже нинзя?), поздравляю!

trikadin 14.11.2011 03:48

observer, а я быстро учусь. Если вы лишены этого качества - простите, ничем не могу помочь) Кстати, я предлагаю вам ещё попытаться поддеть меня по поводу моего возраста - ведь мне 16) Правда, мне вряд ли удастся сравниться с таким взрослым вами? :D

И кстати, мне приятно) Вы не поленились просмотреть список моих тем - а это какое-никакое, но признание. :)


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