Ada*_*dam 2 javascript replace nodename
是否可以替换节点名称?喜欢:
HTML:
<strong id="element">Text</strong>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
var element = document.getElementById("element");
element.nodeName = "b";
Run Code Online (Sandbox Code Playgroud)
我认为它不起作用,如果以这种方式不可能,那怎么办呢?
为什么我需要它:
我正在构建一个文本编辑器,IE在execCommand()函数中使用强而不是b,我想改变它,我试图从头开始构建execCommand("粗体"),但是存在很多问题,即使在IE 8和9之间存在差异.所以现在我决定更改它的节点名称,它会非常简单,但不起作用.. :(
注意:我需要它才能在Internet Explorer中工作.
谢谢
不,但您可以轻松替换节点:
var oldNode = document.getElementById('element'),
newNode = document.createElement('b'),
node,
nextNode;
node = oldNode.firstChild;
while (node) {
nextNode = node.nextSibling;
newNode.appendChild(node);
node = nextNode;
}
newNode.className = oldNode.className;
// Do attributes too if you need to
newNode.id = oldNode.id; // (Not invalid, they're not both in the tree at the same time)
oldNode.parentNode.replaceChild(newNode, oldNode);
Run Code Online (Sandbox Code Playgroud)
非常感谢Haochi指出replaceChild,我做到了这一点:
oldNode.parentNode.insertBefore(newNode, oldNode);
oldNode.parentNode.removeChild(oldNode);
Run Code Online (Sandbox Code Playgroud)
实例 ......但replaceChild更清洁.
文档: