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代码>