web*_*.ic 5 html javascript string parsing domparser
我有一个HTML string例如'<p><span class="text">Hello World!</span></p>'
我将其解析HTML string为DOMusing DOMParser().parseFromString(),因为我想更改innerHTML某些特定elements. 这就是为什么我parse在HTML string来DOM与getElementByClassName我通过他们让我的所有元素,并循环改变它innerHTML。到目前为止,这有效。
更改后innerHTML,我尝试将新的转换DOM回string. 我无法弄清楚如何。我尝试的是将innerHTML或outerHTML(都尝试过)分配给这样的变量:
const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined
Run Code Online (Sandbox Code Playgroud)
const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined
Run Code Online (Sandbox Code Playgroud)
我总是得到undefined。我怎样才能将它解析回 a string?我发现了很多带有innerHTMLor 的例子outerHTML,但就我而言,出了点问题。有任何想法吗?
Cer*_*nce 11
DOMParser 总是会给你一个文档作为回报。文档没有innerHTML属性,但有属性,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);Run Code Online (Sandbox Code Playgroud)
请注意,如果您自己不传递这些标签,则会为您创建一个<head>和<body>。如果你只想要身体,那么:
const myHtmlString = '<p><span class="text">Hello World!</span></p>'
const htmlDom = new DOMParser().parseFromString(myHtmlString, 'text/html');
console.log(htmlDom.body.innerHTML);Run Code Online (Sandbox Code Playgroud)