Javascript 用字符串替换元素

标签 javascript

你怎么能改变这个

<div id='myDiv'><p>This div has <span>other elements</span> in it.</p></div>

进入这个

<div id='myDiv'>This div has other elements in it.</div>

希望使用这样的东西

var ele = document.getElementById('myDiv');
while(ele.firstChild) {
    replaceFunction(ele.firstChild, ele.firstChild.innerHTML);
}
function replaceFunction(element, text) {
    // CODE TO REPLACE ELEMENT WITH TEXT
}

最佳答案

您可以使用 innerTexttextContent如果你想删除所有后代节点,但保留文本:

// Microsoft
ele.innerText = ele.innerText;
// Others
ele.textContent = ele.textContent;

如果只想压平某些,可以定义:

function foldIntoParent(element) {
  while(ele.firstChild) {
    ele.parentNode.insertBefore(ele.firstChild, ele);
  }
  ele.parentNode.removeChild(ele);
}

应该将所有子项从 ele 拉到它的父项中,并删除 ele

因此,如果 ele 是上面的 span,它将执行您想要的操作。要查找并折叠 #myDiv 的所有子元素,请执行以下操作:

function foldAllElementChildren(ele) {
  for (var child = ele.firstChild, next; child; child = next) {
    next = child.nextSibling;
    if (child.nodeType === 1 /* ELEMENT */) {
      foldIntoParent(child);
    }
  }
}

foldAllElementChildren(document.getElementById('myDiv'));

关于Javascript 用字符串替换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224327/

相关文章:

javascript - 如何从矩阵SVG中提取位置、旋转和缩放

javascript - JQuery UI 对话框 - 更改标题颜色仅部分有效

javascript - 在数组中显示下一张图片 onClick

javascript - 即使距离和重量设置为零,获得直边线的问题

javascript - Bootstrap 3 : delete confirm dialog box not work

javascript - 通过 require ("http") 请求将图像作为二进制发送到远程服务器

javascript - 错误: [$injector:unpr] Unknown provider: RestangularProvider <- Restangular <- ctrlAG

javascript - "this"不会引用 JQuery 监听器中的 div

javascript - 如何在JavaScript中使用color类型的输入元素来更改可编辑iframe中显示的字体颜色

javascript - 谷歌地图根据窗口调整大小设置不同的缩放比例