javascript - 将 HTML 字符串解析为 DOM 并将其转换回字符串

标签 javascript html string parsing domparser

我有一个 HTML string例如'<p><span class="text">Hello World!</span></p>'

我解析这个HTML stringDOM使用 DOMParser().parseFromString() ,因为我想更改 innerHTML一些具体的 elements .这就是为什么我 parse HTML stringDOMgetElementByClassName我获取所有元素并循环遍历它们以更改它 innerHTML .这到目前为止有效。

在我更改了 innerHTML 之后, 我尝试转换新的 DOM回到string .我不知道怎么办。我尝试的是分配 innerHTMLouterHTML (都试过了)到这样的变量:

const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined

const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined

我总是得到 undefined .我怎样才能将它解析回 string ?我用 innerHTML 找到了很多例子或 outerHTML ,但就我而言,出了点问题。有什么想法吗?

最佳答案

DOMParser 总是会给你一个文档 作为返回。文档没有 innerHTML属性(property),但document.documentElement确实如此,就像在页面的正常 document 中一样对象:

const myHtmlString = '<p><span class="text">Hello World!</span></p>'
const htmlDom = new DOMParser().parseFromString(myHtmlString, 'text/html');
console.log(htmlDom.documentElement.innerHTML);

请注意 <head><body>如果您不自己传递这些标签,将为您创建。如果你只想要 body ,那么:

const myHtmlString = '<p><span class="text">Hello World!</span></p>'
const htmlDom = new DOMParser().parseFromString(myHtmlString, 'text/html');
console.log(htmlDom.body.innerHTML);

关于javascript - 将 HTML 字符串解析为 DOM 并将其转换回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074776/

相关文章:

javascript - 仅切换包含相同文本的 div

javascript - TypeScript 中的接口(interface)和类

html - 垂直与水平对齐图像

javascript - 如何在移动浏览器中使固定背景覆盖整个屏幕?

r - R 中按字符串格式过滤

javascript - 这个脚本是否遵循通用标准? (Javascript/HTML)

php - 上传图片大于 1.0MB 时 MySQL 服务器已经消失

c# - 复杂的字符串拆分

c# - 如何获取由空格分隔的字符串的第一部分和最后一部分

javascript - 使用 ng-hide/ng-show 的 AngularJS 最佳实践,在加载库之前页面看起来很难看