【问题标题】:Local storage - save DOM changes done with JavaScript本地存储 - 保存使用 JavaScript 完成的 DOM 更改
【发布时间】:2017-02-12 01:58:24
【问题描述】:

我正在尝试弄清楚如何将使用 vanilla JavaScript 完成的 DOM 更改存储在本地存储中,但目前无法弄清楚。

这是对 DOM 进行更多更改的 JavaScript 代码的捷径。

该函数由网页上的按钮调用。

function myFunction() 
{
    document.body.style.backgroundColor = "black";

    var element = document.getElementsByTagName('input'); 
    for (var i = 0; i < element.length; i++) {
    element[i].style.color = "black";
    element[i].style.backgroundColor = "#565969";
    element[i].style.borderColor = "black";
    element[i].style.boxShadow = "inset 0 0 5px black";}
}

已经看到在两个 CSS 之间切换更容易,但想知道如何解决上述问题。

【问题讨论】:

  • 只需将样式存储在 JSON 中。您甚至可以设置元素的样式,然后将其字符串化为 style 参数并保存。
  • 为什么不能使用类和样式表规则?

标签: javascript html css dom local-storage


【解决方案1】:

你可以先检查 localstorage 的 DOM 值,如果它在那里你可以使用它,否则你应用新的 DOM 值。

function myFunction() {
    var DOMValues = {};
    var storageContent = localStorage.getItem('cssProps');

    if (storageContent) {
      DOMValues = JSON.parse(storageContent);
      manipulateDOM(DOMValues);
    } else {
      DOMValues = {
        backgroundColor: 'blue',
        color: 'black'
      };

      localStorage.setItem('cssProps', JSON.stringify(DOMValues));
      manipulateDOM(DOMValues);
    }
}


function manipulateDOM (props) {
    document.body.style.backgroundColor = props.backgroundColor;

    var element = document.getElementsByTagName('input');

    for (var i = 0; i < element.length; i++) {
      element[i].style.color = props.color;
      element[i].style.backgroundColor = props.backgroundColor;
    }
}

【讨论】:

  • 这行得通,但是我忘记在我的第一篇文章中添加另一个问题。如果在同一网页上输入新页面,那是如何加载保存本地存储的?还有如何删除对本地存储所做的更改,换句话说,使用网页上的常规 CSS。
  • localStorage.removeItem('cssProps') 将删除该项目
  • 如果第 1 页和第 2 页使用相同的 JS 脚本,则您只有一个检查 localStorage 内容的函数,然后从第 1 页或第 2 页的任何位置调用该函数
猜你喜欢
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
相关资源
最近更新 更多