我有这个代码
var tmpEl = document.createElement('div')
tmpEl.innerHTML = stringEl;
return tmpEl.firstChild
用于将文本转换为Dom节点。
问题是,如果stringEl
包含<tr>
标记,则必须创建table
标记,而不是div
才能生效。如果希望此代码与stringEl
一起使用保留li
代码我必须创建ol
或ul
div
标记。是否有将字符串转换为Dom节点的通用?
最诚挚的问候,
约尔丹
答案 0 :(得分:2)
function domNode(nodeType, text) {
var node = document.createElement(nodetype);
node.appendChild(document.createTextNode(text));
return node;
}
domNode('p', 'Hello World!');
这样的东西可以让你选择一个标签。
编辑:事实上......
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!'));
答案 1 :(得分:2)
为此设计了一个DOM范围方法:createContextualFragment()
。它在DOM Parsing and Serialization spec中指定,并实现了Mozilla,WebKit和Opera浏览器(但还没有IE)。
以下是一个示例:http://jsfiddle.net/gbWCS/
HTML:
<table id="table">
<tr id="firstRow"><td>One</td><td>Two</td></tr>
</table>
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);