微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何存储现有的 html 元素并在以后创建它?

如何解决如何存储现有的 html 元素并在以后创建它?

我这里有一个非常简单的 html 代码。我想存储整个 div test_area ,然后在需要时创建它。现在,让我们假设我想复制它并将克隆放在现有元素下方,我该怎么做?这是我尝试做但不起作用的事情(特别是innerHtml行):

<body>
    <div class="test_area" id="test_area">
        <h1>
            This is a test
        </h1>
    </div>
</body>

<script>
    let current_element = document.getElementById('test_area')
    let clone = document.createElement('div')
    clone.innerHTML = current_element
    document.body.appendChild(clone)
</script>

最后我希望最终的 html 版本看起来像这样:

这是一个测试

这是一个测试

解决方法

取决于您想对元素做什么。您可以将它存储在一个变量中,然后在某个地方渲染,或者您可以将它存储到 localstore 或发送到服务器或您喜欢的任何东西。这是一个简单的例子:

<div class="test_area" id="test_area">
    <h1>
        This is a test
    </h1>
</div>

<div id="clonearea"></div>

 const current_element = document.getElementById('test_area');
 const clonearea = document.getElementById('clonearea');
 const clone = current_element.cloneNode(true);
 clonearea.appendChild(clone);

您可以在此处阅读有关克隆的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode

这是一个代码笔示例:https://codepen.io/shnigi/pen/LYRQGOW

,

您可以简单地将旧对象转换为 JSON,然后对其进行解析并将其保存到 var。

let myObject = JSON.parse( JSON.stringify( myOldObject ) );

通过这种方式,您可以访问 myObject 并随时显示它。


看看这个问题:
What is the most efficient way to deep clone an object in JavaScript?

,

这不是克隆,而是一种在一行中创建和附加的方法:

document.getElementById("test_area").appendChild(Object.assign(document.createElement("h1"),{textContent: "This is a test"}))
<body>
    <div class="test_area" id="test_area">
        <h1>
            This is a test
        </h1>
    </div>
</body>


要真正克隆,请使用 cloneNode

https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode

let p = document.getElementById("test_area").children[0]
let p_prime = p.cloneNode(true)

document.getElementById("test_area").appendChild(p_prime)
<body>
    <div class="test_area" id="test_area">
        <h1>
            This is a test
        </h1>
    </div>
</body>

,

显然,我应该做的唯一一件事就是使用变量的 innerHTML 并将其附加到正文中,就像这样。我完全忘记了当前元素是一个对象,而不是 html 代码本身。

const current_element = document.getElementById('test_area');
document.body.appendChild(current_element.innerHTML)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。