这个问题在这里已有答案:
有没有办法转换HTML像:
<div>
<a href="#"></a>
<span></span>
</div>
或任何其他HTML字符串到DOM元素? (这样我就可以使用appendChild())了 . 我知道我可以做.innerHTML和.innerText,但这不是我想要的 - 我真的希望能够将动态HTML字符串转换为DOM元素,以便我可以在.appendChild()中传递它 .
更新:似乎有困惑 . 我有一个字符串中的HTML内容,作为JavaScript中变量的值 . 文档中没有HTML内容 .
8 回答
您可以使用
DOMParser
,如下所示:您通常创建一个临时父元素,您可以将
innerHTML
写入其中,然后提取内容:如果你的外部HTML的元素是一个简单的
<div>
,这很容易 . 如果它可能是其他任何东西都不能去的东西,那么你可能会遇到更多问题 . 例如,如果它是<li>
,则必须让父包装为<ul>
.但IE无法在
<tr>
之类的元素上写innerHTML
所以如果你有一个<td>
你必须将整个HTML字符串包装在<table><tbody><tr>
...</tr></tbody></table>
中,把它写成innerHTML
并从几个级别中解放你想要的实际<td>
下 .为什么不使用insertAdjacentHTML
例如:
看看John Resig的pure JavaScript HTML parser .
编辑:如果您希望浏览器为您解析HTML,
innerHTML
正是您想要的 . 来自this SO question:好吧,在我不得不考虑其他人的答案之后,我自己意识到了答案 . :P
这是一个有用的小代码 .
--Convert the HTML string into a DOM Element
--prototype helper
--Usage
只需给元素一个
id
并正常处理它,例如:现在你可以这样做:
或者使用jQuery:
你可以这样做: