将字符串转换为Dom节点javascript?
将字符串转换为Dom节点javascript?,javascript,dom,Javascript,Dom,我有这个密码 var tmpEl = document.createElement('div') tmpEl.innerHTML = stringEl; return tmpEl.firstChild 用于将文本转换为Dom节点。 问题是,如果stringEl包含标签,我必须创建表标签而不是div,这样才能工作。如果希望此代码与stringEl包含li标签一起工作,我必须创建ol或ul,而不是div标签。是否有将字符串转换为Dom节点的通用方法? 致以最诚挚的问候, 伊尔丹 类似的东西允许您选
我有这个密码
var tmpEl = document.createElement('div')
tmpEl.innerHTML = stringEl;
return tmpEl.firstChild
用于将文本转换为Dom节点。
问题是,如果stringEl
包含
标签,我必须创建表标签而不是div
,这样才能工作。如果希望此代码与stringEl
包含li
标签一起工作,我必须创建ol
或ul
,而不是div
标签。是否有将字符串转换为Dom节点的通用方法?
致以最诚挚的问候,
伊尔丹
类似的东西允许您选择一个标记
编辑:事实上
function domNode(nodeType, text) {
var node = document.createElement(nodetype);
if (text) node.appendChild(document.createTextNode(text));
return node;
}
var myList = domNode('ul').appendChild(domNode('li', 'This is a list item!'));
有一个DOM范围的方法是为此设计的:。它是在中指定的,并在Mozilla、WebKit和Opera浏览器中实现(但尚未实现IE)
下面是一个例子:
HTML:
一二
JavaScript:
var html = "<tr><td>Three</td><td>Four</td></tr>";
var table = document.getElementById("table");
var range = document.createRange();
range.selectNodeContents(table);
var frag = range.createContextualFragment(html);
table.appendChild(frag);
var html=“ThreeFour”;
var table=document.getElementById(“表格”);
var range=document.createRange();
范围。选择节点内容(表格);
var frag=range.createContextualFragment(html);
表2.儿童(frag);
如果您提供不同的stringEl
值,以及您最终的期望值,这可能有助于理解您的问题。我认为您低估了这个问题的复杂性。当您处理受限制的元素集时,此代码段非常有用,但是如果打算将其作为泛型的话,它就太松散了。检查jQuery(.parseHTML,.buildFragment)的相关函数,看看它是如何解决的;提示:这远远不是3行代码。
<table id="table">
<tr id="firstRow"><td>One</td><td>Two</td></tr>
</table>
var html = "<tr><td>Three</td><td>Four</td></tr>";
var table = document.getElementById("table");
var range = document.createRange();
range.selectNodeContents(table);
var frag = range.createContextualFragment(html);
table.appendChild(frag);