2017-02-11 57 views
1

我想弄清楚如何在本地存储中使用vanilla JavaScript完成DOM更改,但至今无法弄清楚。本地存储 - 使用JavaScript保存DOM更改

这是从DOM代码中做了几个更改的简短剪切。

该功能由网页上的按钮调用。

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之间切换更容易,但想知道如何解决上述问题。

+0

只需将样式存储在JSON中。你甚至可以设置元素的样式,然后将它的'style'参数串化并保存。 – Carcigenicate

+0

为什么你不能使用类和样式表规则? – charlietfl

回答

1

您可以首先检查DOM值的localstorage,如果有的话您使用它,否则您应用新的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; 
    } 
} 
+0

这是有效的,但还有一个问题,我忘了添加到我的第一篇文章。如果在同一个网页上输入新页面,那么如何加载保存本地存储?另外,如何删除对本地存储的更改,换句话说,使用网页上的常规CSS。 – Gascogne

+1

'localStorage.removeItem('cssProps')'将删除项目 – akinjide

+1

如果页面1和页面2使用相同的JS脚本,则只需检查localStorage内容的功能,然后从第1页或第2页 – akinjide