Я ищу заменить элемент в DOM.
Например, есть элемент <a>
который я хочу заменить на <span>
.
Как бы я пошел и сделал это?
Я ищу заменить элемент в DOM.
Например, есть элемент <a>
который я хочу заменить на <span>
.
Как бы я пошел и сделал это?
с помощью replaceChild():
<html>
<head>
</head>
<body>
<div>
<a id="myAnchor" href="http://www.stackoverflow.com">StackOverflow</a>
</div>
<script type="text/JavaScript">
var myAnchor = document.getElementById("myAnchor");
var mySpan = document.createElement("span");
mySpan.innerHTML = "replaced anchor!";
myAnchor.parentNode.replaceChild(mySpan, myAnchor);
</script>
</body>
</html>
var a = A.parentNode.replaceChild(document.createElement("span"), A);
a - замещенный элемент A.
A.replaceWith(span)
- родитель не нуженОбщая форма:
target.replaceWith(element);
Путь лучше/чище, чем предыдущий метод.
Для вашего случая использования:
A.replaceWith(span);
Поддерживаемые браузеры - 90% апр. 2019
Этот вопрос очень старый, но я обнаружил, что готовлюсь к сертификации Microsoft, и в учебнике было предложено использовать:
oldElement.replaceNode(newElement)
Я посмотрел его, и кажется, что он поддерживается только в IE. Doh..
Я думал, что просто добавлю это здесь как забавную заметку;)
Пример замены элементов LI
function (element) {
let li = element.parentElement;
let ul = li.parentNode;
if (li.nextSibling.nodeName === 'LI') {
let li_replaced = ul.replaceChild(li, li.nextSibling);
ul.insertBefore(li_replaced, li);
}
}
У меня была похожая проблема, и я нашел эту тему. Заменить не сработало для меня, и в моей ситуации было трудно ездить к родителю. Внутренний HTML заменил детей, что было не тем, чего я хотел. Использование outerHTML сделало свою работу. Надеюсь, это поможет кому-то еще!
currEl = <div>hello</div>
newElem = <span>Goodbye</span>
currEl.outerHTML = newElem
# currEl = <span>Goodbye</span>
Учитывая уже предложенные варианты, самое простое решение без поиска родителя:
var parent = document.createElement("div");
var child = parent.appendChild(document.createElement("a"));
var span = document.createElement("span");
// for IE
if("replaceNode" in child)
child.replaceNode(span);
// for other browsers
if("replaceWith" in child)
child.replaceWith(span);
console.log(parent.outerHTML);