Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为Dom节点javascript?_Javascript_Dom - Fatal编程技术网

将字符串转换为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);