3


我有这个代码

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

我用于将文本转换为 Dom 节点。问题是,如果stringEl包含<tr>标签,我必须创建table标签而不是div为此工作。此外,如果希望此代码与包含stringEl标签一起使用,li我必须创建olul插入div标签。是否有任何通用的将字符串转换为 Dom 节点?
最好的问候,
约旦

4

2 回答 2

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!'));
于 2012-10-19T13:56:23.143 回答
2

为此设计了一种 DOM Range 方法:createContextualFragment(). 它在DOM Parsing and Serialization 规范中指定,并在 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);
于 2012-10-19T14:31:59.750 回答