Заменить узел на innerhtml - PullRequest
3 голосов
/ 30 апреля 2010

С помощью JavaScript я хочу удалить определенный узел DOM и заменить его на innerHTML. Например я хочу изменить

<div>
...
   <div id="t1">
        this is <b> the text </b> I want to remain.
   </div>
...
</div>

Для

<div>
...
    this is <b> the text </b> I want to remain.
...
</div>

Ответы [ 7 ]

2 голосов
/ 30 апреля 2010

Попробуйте это:

var oldElem = document.getElementById('t1');
oldElem.innerHTML = 'this is <b> the text </b> I want to remain.';
var parentElem = oldElem.parentNode;
var innerElem;

while (innerElem = oldElem.firstChild)
{
  // insert all our children before ourselves.
  parentElem.insertBefore(innerElem, oldElem);
}
parentElem.removeChild(oldElem);

Здесь есть демо .

Это фактически то же самое, что и .replaceWith() из jQuery:

$("#t1").replaceWith('this is <b> the text </b> I want to remain.');
1 голос
/ 10 сентября 2015

var t1 = document.getElementById("t1"); t1.outerHTML = "this is <b> the text </b> I want to remain.";

http://youmightnotneedjquery.com/#replace_from_html

1 голос
/ 30 апреля 2010

Это работает:

var t1 = document.getElementById("t1");
t1.parentNode.innerHTML = t1.innerHTML;

Edit:

Обратите внимание, что если у родителя t1 есть другие дочерние элементы, вышеприведенное также удалит всех этих детей. Следующее исправляет эту проблему:

var t1 = document.getElementById("t1");
var children = t1.childNodes;
for (var i = 0; i < children.length; i++) {
    t1.parentNode.insertBefore(children[i].cloneNode(true), t1);
}
t1.parentNode.removeChild(t1);
1 голос
/ 30 апреля 2010

Если вы используете jQuery , вы можете попробовать

var inner = j$("#t1").html()
$('#t1').replaceWith(inner);
0 голосов
/ 28 ноября 2018

На самом деле это очень просто:

let span = document.getElementById('id');
span.outerHTML = span.innerHTML;
0 голосов
/ 30 апреля 2010

вы можете использовать jquery , если это возможно. это сделало бы вашу жизнь намного проще.

Если у вас есть jquery, вы можете легко сделать это через

$("#t1").html("this is <b> the text </b> I want to remain.");

и если вам сложно учиться, вы всегда можете начать с изучения селекторов jquery. ты не узнаешь, почему ты не использовал это все это время:)

извините, если это не то, что вы хотите именно ..

~ JQuery наркоман

Обновлен:

Чтобы показать, какой HTML-текст поместить внутрь.

0 голосов
/ 30 апреля 2010

Я только что изменил HTML. Вот так.

<div>
<div id="t0">
<div id="t1">
        this is <b> the text </b> I want to remain.
</div>
</div>
</div>

И вы делаете что-то вроде

document.getElementById("t0").innerHTML = "this is <b> the text </b> I want to remain.";

Надеюсь, что это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...