首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用innerHTML获取innerHTML

不使用innerHTML获取innerHTML
EN

Stack Overflow用户
提问于 2011-09-24 00:00:38
回答 3查看 2.3K关注 0票数 0

我知道innerHTML应该很讨厌(让我们不要开始争论了。我们正试图在我的工作中逐步淘汰它),但我需要能够获得一些HTML的纯文本版本。现在我有台词了。

代码语言:javascript
复制
bodycontents = document.getElementById("renderzone").innerHTML;

但是我想知道,比如说,如果没有innerHTML,我将如何获得相同的结果。我不怕DOM操作(我已经做过很多次了),所以请在回答问题时尽量使用技术性的方法。

EN

回答 3

Stack Overflow用户

发布于 2011-09-24 00:04:20

在不使用element.innerHTML属性的情况下检索HTML内容中的元素听起来像是一项学术研究,不太可能有简单的解决方案。

基于DOM的方法需要像递归遍历这样的东西来检索所有子节点,附加它们的文本内容,并序列化元素名称和属性。例如(在JavaScript/DOM伪代码中):

代码语言:javascript
复制
var getHtmlContent(el, str) {
  str += '<' + el.nodeName;
  foreach (attr in el.attribute) {
    str += attr.name + '="' + escapeAttrVal(attr.value) + '"';
  }
  str += '>';
  foreach (node in el.childNodes) {
    if (node.isTextNode()) {
      str += node.textContent;
    } else {
      str += getHtmlContent(node, str);
    }
  }
  str += '</' + el.nodeName + '>';
  return str;
}
getHtmlContent(myElement, ''); // '<div id="myElement" class="foo">Text<div...'
票数 2
EN

Stack Overflow用户

发布于 2011-09-24 00:09:30

我想你想要的是:

代码语言:javascript
复制
someElement.textContent
票数 0
EN

Stack Overflow用户

发布于 2017-03-10 05:44:15

在现代浏览器上,XMLSerializer可能会帮助您:

代码语言:javascript
复制
var el = document.getElementById('my-id');
var html_string = new XMLSerializer().serializeToString(el);
console.log(html_string);
代码语言:javascript
复制
<p id="my-id">Greetings Friends</p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7531753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档