javascript - 刷新页面返回 [object CSSStyleDeclaration]
问题描述
当我编辑内容并保存更改时,它会在刷新页面时显示 [object CSSStyleDeclaration] 而不是我更新的内容。
function newElement() {
let li = document.createElement("li");
let inputvalue = document.querySelector("#myInput").value;
let savedNote = document.createTextNode(inputvalue);
li.appendChild(savedNote);
if (inputvalue === '') {
alert("Please write something")
} else {
document.querySelector("#myNotes").appendChild(li);
}
document.querySelector("#myInput").value = '';
}
function saveEdits() {
let editElement = document.querySelector("#saved-notes");
editElement = document.querySelector("#myNotes");
let userVersion = editElement.innerHTML;
userVersion = editElement.style;
localStorage.userEdits = userVersion;
document.querySelector("#update").innerHTML = "Edits saved. Refresh the page to see changed content";
}
function checkEdits() {
if (localStorage.userEdits != null)
document.querySelector("#saved-notes").innerHTML = localStorage.userEdits;
document.querySelector("#myNotes").style = localStorage.userEdits;
}
ul {
margin: 0;
padding: 0;
}
ul li {
cursor: pointer;
position: relative;
padding: 12px 8px 12px 40px;
background: #eee;
font-size: 18px;
transition: 0.2s;
}
<html>
<head>
<meta charset="utf-8">
</head>
<body onload="checkEdits()">
<div id="myDiv" class="new-note">
<textarea id="myInput"></textarea><br>
<button onclick="newElement()" class="save-button">Create</button>
<button onclick="saveEdits()" class="edit-button">Save Changes</button>
</div>
<div id="update"></div>
<div id="saved-notes"></div>
<ul id="myNotes">
</ul>
</body>
</html>
如果我删除它会起作用userVersion = editElement.style;
,但不会有 CSS 样式。只是纯文本。
我想了解为什么会发生这种情况并从中吸取教训。提前致谢。
解决方案
这是因为函数localStorage.set
只能保存字符串,所以它会.toString()
在对象存储之前调用它,它的结果是它的类型[object CSSStyleDeclaration]
。您是否尝试在保护它之前对其进行字符串化?
userVersion = JSON.stringify(editElement.style);
document.querySelector("#myNotes").style = JSON.parse(localStorage.userEdits);
推荐阅读
- angular - Angular - 每次执行函数时更改不同的值
- html - 如何在不使用引导、媒体查询和任何其他框架的情况下创建响应式网站
- r - 为什么我的 kNN 这么慢?depth = 1 and k = 1...是什么让我慢下来?
- python - 如何编写命令行脚本以在选定的 AWS 实例中启用自动恢复?
- android - logcat 停止写入设备上的文件
- django - Django modelform:用于插入和更新的单一视图?
- pagination - Python 中的 AWS Athena 异步分页
- html - 如何为所有其他 html 页面显示 HTML 相同的页面标题
- c# - EntityFramework - 奇怪的行为
- git - 如何从 git 签出特定的提交