我有一个包含以下文本的字符串:
<!DOCTYPE html>
<html>
<head>
<title>ExtractDiv test</title>
</head>
<body>
<p>Apples and oranges</p>
<div id="main">
<ul style="list-style-type: upper-roman">
<li>Äpfel</li>
<li>Birnen</li>
</ul>
</div>
<p>Men and women</p>
</body>
</html>
现在我需要一个 JavaScript 函数,它返回一个具有特定 ID 的 DOM 元素作为字符串,例如:
function ExtractElementByIdFromString(HTMLString, IdString)
{
var ExtractedElement = ???(HTMLString, IdString);
return ExtractedElement;
}
所以在这种情况下这个函数的结果是:
<div id="main">
<ul style="list-style-type: upper-roman">
<li>Äpfel</li>
<li>Birnen</li>
</ul>
</div>
这可能吗?
最佳答案
您可以使用 native DOMParser 解析 HTML 字符串:
var str = "<!DOCTYPE……………" // your HTML string
var doc = new DOMParser().parseFromString(str, "text/html")
然后只需使用常规 DOM 方法:
console.log( doc.getElementById("main") )
请注意,使用 DOMParser 比在文档的 innerHTML 中的某处插入字符串更有效、更安全,因为只会创建结构 — <script>
元素不会被执行,图像不会被加载,CSS 不会尝试应用于它,不会发生渲染等。
关于javascript - 从字符串中按ID提取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894426/