javascript - 如何使用 javascript 完全恢复本地存储中保存的 <div> 标签?

标签 javascript local-storage web-storage

我在使用 javascript 将标签保存在本地存储中后恢复标签时遇到问题

这是我在本地存储中保存div标签的代码

function saveqform() {
    var parent = document.getElementById("questions");
    console.log(parent);
    if (parent === undefined) {
        return;
    } else {
        localStorage.qtag = parent;
    }
}

这是我从本地存储恢复 div 标签的代码

function reloadqform() {
    console.log(localStorage.qid);
    console.log(localStorage.qtag);
    if (localStorage.qid === undefined || localStorage.qtag === undefined) {
        return;
    } else {
        $(document).ready(function() {
            var saved = localStorage.qtag;
            var parent = document.getElementById("element");
            parent.appendChild(saved);
        });
    }
}

不幸的是,当从本地存储中恢复 div 标签时,上面的代码只输出未定义的,所以我采用了另一种方法,保存了 innerhtml 而不是整个标签 这是我保存内部 html 的代码

function saveqform() {
        var parent = document.getElementById("questions");
        console.log(parent);
        if (parent === undefined) {
            return;
        } else {
            localStorage.qtag = parent.innerHTML;
        }
    }

这是我恢复标签的代码

 function reloadqform() {
        console.log(localStorage.qid);
        console.log(localStorage.qtag);
        if (localStorage.qid === undefined || localStorage.qtag === undefined) {
            return;
        } else {
            $(document).ready(function() {
                var saved = localStorage.qtag;
                var parent = document.getElementById("element");
                parent.innerHTML=saved;
            });
        }
    }

实际上这段代码完美地恢复了 div 标签和标签内的元素,只是我丢失了我已经使用 .onclick 方法在 javascript 中设置的所有 onclick 函数 那么我该怎么做才能完全恢复标签,包括它的所有操作提前致谢

最佳答案

您不能在本地存储中存储 DOM 引用。本地存储仅存储字符串,不存储 DOM 引用。

您可以存储 DIV 的内容,但不能存储 DIV 对象本身。如果您想在恢复的对象上使用事件处理程序,则必须在创建恢复的对象后重新附加事件处理程序。

在您的第二个示例中,如果您正在重写父级的所有 innerHTML,它将销毁并重新创建所有子元素,这将销毁可能已经设置的所有事件处理程序。最好只保存/恢复一个特定元素的单独状态,从而只在一个没有子元素的元素上设置 .innerHTML。这样做,您不会破坏任何事件处理程序。

Cookie 或本地存储可以将状态从一个页面存储到下一个页面。

这里要记住的一件事是,DOM 对象仅在当前页面中的当前文档的生命周期内存在。加载新页面后,第一页的所有内容都会被销毁,并创建一个全新的文档和一组全新的 DOM 对象以及一个全新的 javascript 环境。

关于javascript - 如何使用 javascript 完全恢复本地存储中保存的 <div> 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306822/

相关文章:

javascript - 我如何在客户端存储 javascript 引用?

javascript - Jquery 使用 click 函数来引用按钮

javascript - 如何使用 Slim 在 html <head> 标签中添加带有 id 的 javascript 代码?

java - android arraylist应用程序白屏

javascript - 检查 Firefox WebExtensions storage.local

javascript - 使用 Javascript 在 localStorage 中存储大型整数数组的最有效方法

带有 AngularJS 表的 Javascript 上下文菜单

javascript - 将数组数组与前一个数组项连接起来

javascript - .map() 仅返回数组中的最后一个对象

javascript - 尝试使用 session 存储,获取 "Unable to set property ' logon' of undefined or null reference