Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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
Javascript 字符串转换为HTML,无需额外的周围div_Javascript - Fatal编程技术网

Javascript 字符串转换为HTML,无需额外的周围div

Javascript 字符串转换为HTML,无需额外的周围div,javascript,Javascript,我有一个表示元素的字符串,名为lal\u output。它有href、id和class。我想将此字符串转换为HTML: lal_html = document.createElement('div'); lal_html.innerHTML = lal_output; 问题是它接收包装器。我怎样才能摆脱它?我必须在没有库的情况下使用JavaScript。尽管可以使用正则表达式捕获子元素,但对于您的用例来说,使用正则表达式可能更容易 lal_html = document.createD

我有一个表示
元素的字符串,名为
lal\u output
。它有href、id和class。我想将此字符串转换为HTML:

lal_html = document.createElement('div');
lal_html.innerHTML = lal_output;    

问题是它接收
包装器。我怎样才能摆脱它?我必须在没有库的情况下使用JavaScript。

尽管可以使用正则表达式捕获子元素,但对于您的用例来说,使用正则表达式可能更容易

lal_html = document.createDocumentFragment();
lal_html.innerHTML = lal_output;

// Attach it to the node it belongs to in the DOM
element.appendChild(lal_html);
您可以按如下所示使用

var parser = new DOMParser();
var domString = '<a class="test" href="https://google.com">Google</a>';
var html = parser.parseFromString(domString, 'text/html');    
document.body.append(html.body.firstChild); //append to somewhere appropriate
var parser=new DOMParser();
var domString='';
var html=parser.parseFromString(domString,'text/html');
document.body.append(html.body.firstChild)//附加到适当的地方

一个简单的

您可以尝试使用
insertAdjacentElement

document.body.insertAdjacentElement('beforeend', lal_output);
或者,如果需要将其放置在特定元素之后:

document.querySelector('someSpecificSelector').insertAdjacentElement('afterend', lal_output);

第一个参数的其他有效值是
'beforebeagin'
'afterbegin'
。请参见我不能简单地使用
document.createDocumentFragment()
而不是
document.createElement('div')
。它在第页上没有生成任何输出。然而,我发现这个解决方案解决了这个问题。我不知道Tico提供的这种或更短的方式是否更好

function stringToHTML(htmlStr) {    

    frag = document.createDocumentFragment();
    temp = document.createElement('div');
    temp.innerHTML = htmlStr;

    while(temp.firstChild) {
        frag.appendChild(temp.firstChild);
    }

    return  frag;
}

lal_html = stringToHTML(lal_output);

这正是
DocumentFragment
的用途。很棒的东西,我可以通过在解析后添加一行来将准确的HTML存储在变量中:
parser=new DOMParser();lal_html=parser.parseFromString(lal_输出,'text/html');lal_html=lal_html.body.firstChild