javascript - 在所有网页上和刷新后使用 javascript 保持更改
问题描述
我有一个下拉选择器,可让您使用“白色”和“黑色”选项选择网站主题。
<select name="Invert" onchange="changeColor(this)">
<option value="white">White</option>
<option value="black">Black</option>
</select>
然后我有以下 js 函数 changeColor()
function changeColor(x) {
var body = document.getElementById('body');
if (x.value == 'black') {
body.style.backgroundColor = x.value;
body.style.color = 'white';
} else if (x.value == 'white') {
body.style.backgroundColor = x.value;
body.style.color = 'black';
}
}
我在每个页面的单独 js 文件中为其他页面设置了相同的选择器和 js 函数。
当我选择一个主题选项然后刷新或转到另一个页面时,主题颜色会恢复为默认的白色。
问题是,我如何在刷新网站后为其他页面保留更改后的主题?
解决方案
将选择保存在 中localStorage
,然后在页面加载时,将样式设置为 中的值localStorage
(如果有)。
例如:
var body = document.getElementById('body');
if (localStorage.color) body.style.backgroundColor = localStorage.color;
function changeColor(x) {
if (x.value == 'black') {
body.style.backgroundColor = x.value;
body.style.color = 'white';
localStorage.color = 'white';
} else if (x.value == 'white') {
body.style.backgroundColor = x.value;
body.style.color = 'black';
localStorage.color = 'white';
}
}
推荐阅读
- oracle - 错误:在 Crystal Reports 中刷新报表时,“ORA-24374:在获取或执行和获取之前定义未完成”
- java - thymeleaf 模板如何将模型属性与
领域? - mysql-workbench - 如何禁用 MySQL Workbench 的深色主题
- c++ - 对更改私有成员变量的函数进行单元测试
- java - 记录 Java 系统类中的方法调用
- spring-boot - 需要一个找不到的“org.springframework.kafka.core.KafkaTemplate”类型的bean
- flutter - 当我滚动视图时,颤动修复屏幕顶部的标签栏
- android - Android EditText 大写字母数字键盘
- mysql - FlywayException:验证失败
- facebook - Facebook Page Reviewers 通过 Graph API