<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: content-box;
}
a {
text-decoration: none;
display: inline-block;
width: 80px;
height: 40px;
background-color: antiquewhite;
text-align: center;
line-height: 40px;
box-shadow: antiquewhite;
}
.change {
margin: 20px auto;
text-align: center;
}
.form {
text-align: center;
height: 300px;
margin: 100px auto;
}
.form input {
height: 40px;
margin: 0 20px;
padding: 10px;
font-size: 20px;
border-radius: 5px;
border-color: skyblue;
}
#word {
width: 150px;
}
#description {
width: 300px;
}
#save {
width: 80px;
}
</style>
</head>
<body>
<div class="change">
<a href="#">查询单词</a>
</div>
<div class="form">
单词:<input type="text" name="word" id="word" placeholder="请输入单词">
解释:<input type="text" name="description" id="description" placeholder="请输入单词解释">
<input type="button" value="保存" id="save">
</div>
<script>
// 自执行函数:为了让代码独立(命名不冲突,变量是局部是安全)
// 沙箱:提供一种隔离机制运行代码,代码不会被外部影响,同时也不影响外部代码
(function () {
let save = document.querySelector('#save');
let word = document.querySelector('#word');
let desc = document.querySelector('#description');
save.addEventListener('click', () => {
let = words = word.value.trim();
let = descs = desc.value.trim();
if (words.length == 0) return
if (descs.length == 0) return
// 从本地存储中取出数据:有就是字符串,没有就是null
let storage = localStorage.getItem('words');
console.log(storage) //null
// 如果为空null:说明当前是第一次存储数据
if (storage == null) storage = {}; // 空对象
else storage = JSON.parse(storage); // 有:将原来的对象取出来
/* 如果想要允许单词覆盖:将下面这几行代码注释 */
if (storage[words]) {
// 对象中有words对应的属性
alert(words + '已经存在');
return;
}
// words是收入的单词,descs是解释
// storage增加一个属性:名字叫做words代表的单词,值就是解释
storage[words] = descs;
// 将当前新存储的内容,去覆盖原来的内容(转成json格式字符串)
localStorage.setItem('words', JSON.stringify(storage));
word.value = '';
desc.value = '';
});
document.querySelector('.change').addEventListener('click', () => {
location.assign('单词查看.html');
});
})();
</script>
</body>
</html>