我有一个HTML
string
,例如'<p><span class="text">Hello World!</span></p>'
我使用HTML
将此string
DOM
解析为DOMParser().parseFromString()
,因为我想更改某些特定innerHTML
的{{1}}。这就是为什么我将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
我总是得到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
的示例,但就我而言,出了点问题。有什么想法吗?
答案 0 :(得分:1)
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);
请注意,如果您自己不传递这些标记,则会为您创建一个<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);