根据ID从字符串中提取元素
Extract element by ID from string?
我有一个包含以下文本的字符串:
<!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>
这可能吗?
您可以使用本机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不会尝试应用于它,不会发生渲染,等等。
您可以创建一个临时元素,将HTMLString
作为其内容,然后使用querySelector
获得传递id
的元素。像这样:
function ExtractElementByIdFromString(HTMLString, IdString) {
var result,
temp = document.createElement('div'); // Create a temporary element
temp.innerHTML = HTMLString; // Set the passed string as HTML to the temporary element
result = temp.querySelector('#' + IdString).outerHTML; // Find an element with the passed id
return result;
}
jsFiddle的工作演示
相关文章:
- 提取没有特定子元素的主体元素
- 使用JavaScript在Json中提取时,将数组的元素转换为String
- 用于提取 HTML 标记子元素的正则表达式
- 从 Ajax-JSON 中提取元素
- 使用 javascript 从 html 中提取元素
- Knockout.js 从 observableArray 中提取元素返回 undefined
- 使用xpath脚本从html源代码中提取元素
- 如何从 id 中提取元素
- ' ImportNode '和从' iframe '中提取元素
- 根据ID从字符串中提取元素
- 如何在jQuery中提取元素属性值到列表
- 从ClojureScript中的html-string中提取元素
- 如何遍历数组并根据其数据类型提取元素
- 如何在javascript中使用提取元素循环图像
- 正在从变量中提取元素
- 如何从数组中提取元素,并将其放入javascript中的文本字段中
- 从数组javascript中提取元素
- 从数组中提取元素
- 如何在Jquery中从Json响应中提取元素
- 提取元素的HTML