gpt4 book ai didi

javascript - 如何将元素从字符串插入到 html 文档中?

转载 作者:行者123 更新时间:2023-12-04 09:10:54 27 4
gpt4 key购买 nike

我在 localStorage 中存储了一串 html 代码,我想要的是将该字符串转换为文档并将该文档添加到现有页面。到目前为止,我想出了:

var data = localStorage.getItem("data");
var frag = document.createRange().createContextualFragment(data);
document.body.appendChild(frag);
但在页面中,文档片段只是一个简单的字符串。
编辑
我目前有 html:
<html>
<head>
</head>
<body>
</body>
</html>
我为了测试目的而保存到 localStorage 的字符串是 <p>Test</p>我试图得到的结果:

<html>
<head>
</head>
<body>
<p>Test</p>
</body>
</html>
我得到的结果:
<html>
<head>
</head>
<body>
"<p>Test</p>"
</body>
</html>

最佳答案

如果本地存储中的文本是 HTML,您可以使用 insertAdjacentHTML 将其插入到任何其他现有元素的开头、结尾、前面或后面。 .例如,使用 html 中的 HTML 添加到文档中最后在文档正文中:

document.body.insertAdjacentHTML("beforeend", html);
例子:

const html = "<p>This is a new paragraph with <em>emphasized</em> text.</p>";
document.body.insertAdjacentHTML("beforeend", html);
<p>This paragraph is already on the page.</p>

您也可以使用 innerHTML 如果要完全删除该元素的当前内容并将其替换为 HTML 字符串中定义的内容,请使用现有元素的属性:
someElement.innerHTML = html;
例子:

const html = "This is the new content for the paragraph, with <em>emphasized</em> text.";
document.getElementById("existing-paragraph").innerHTML = html;
<p id="existing-paragraph">This paragraph is already on the page.</p>


如果它不是 HTML,您可以将它放在一个元素中(例如 pdiv )并通过 appendChild 将其附加到某处或 insertBefore ,例如:
const p = document.createElement("p");
p.textContent = text;
document.body.appendChild(p);
例子:

const text = "This is plain text, so things like <this> don't get misinterpreted as HTML.";
const p = document.createElement("p");
p.textContent = text;
document.body.appendChild(p);

或者只是使用 createTextNode 将其附加为原始文本:
const textNode = document.createTextNode(text);
document.body.appendChild(textNode);
例子:

const text = "This is plain text, so things like <this> don't get misinterpreted as HTML.";
const textNode = document.createTextNode(text);
document.body.appendChild(textNode);


还有更多探索 on MDN .

在评论中,我们发现本地存储中的文本已经经过 HTML 编码,如下所示: &lt;p&gt;Testing &lt;em&gt; one two three&lt;/em&gt;&lt;/p&gt;这意味着无论将文本放入本地存储的任何代码在执行此操作之前对其进行编码(因为本地存储不会这样做;它忠实地存储并返回您提供的确切字符串)。最好的解决方案可能是更新该代码,使其不这样做。
如果您不能更新该代码,您可以将该文本解释为 HTML,您只需要做两次:一次解释 &lt;所以他们是 <再次,然后再次插入并解析生成的 HTML。最简单的方法是创建一个元素(例如 div),设置它的 innerHTML ,然后阅读它的 textContent .下面是一个例子:
例子:

const textFromLocalStorage = "&lt;p&gt;Testing &lt;em&gt; one two three&lt;/em&gt;&lt;/p&gt;";
const div = document.createElement("div");
div.innerHTML = textFromLocalStorage;
const decodedHtml = div.textContent;
document.body.insertAdjacentHTML("beforeend", decodedHtml);
<p>This paragraph is already on the page.</p>

关于javascript - 如何将元素从字符串插入到 html 文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63356105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com