将字符串转换为Dom节点javascript?

时间:2012-10-19 13:50:53

标签: javascript dom


我有这个代码

var tmpEl = document.createElement('div')
tmpEl.innerHTML = stringEl;
return tmpEl.firstChild

用于将文本转换为Dom节点。 问题是,如果stringEl包含<tr>标记,则必须创建table标记,而不是div才能生效。如果希望此代码与stringEl一起使用保留li代码我必须创建olul div标记。是否有将字符串转换为Dom节点的通用?
最诚挚的问候,
约尔丹

2 个答案:

答案 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);