JS-5-2- Local Storage

by jiaxin520

HTML

<body>
<div id="app">
<p class="title">代辦事項</p> </div>

<div class="a1">
<p class="start">
<input type='text' id=textinput placeholder="輸入內容">
<button class="Q1">+</button>
</p>
<select class='selectstyle' onchange ="changecolor()">
 <option value="" disabled hidden selected>等級</option>
  <option value="normal">一般</option>
  <option value="important">重要</option>
  <option value="emergency">緊急</option>
</select>
<button class="storage" onclick="save()">儲存</button>
<button class="output">匯出</button>
  <ul  class="a2"><!--
  <li class="normal">
    <span>倒垃圾</span>
    <span class="textfinish">(已完成)</span>
    <span class="textready">[標示為已完成]</span>
     <button class="a3">刪除</button>
  </li>
  <li class="important">
    <span>繳電話費</span>
     <span class="textfinish1">(已完成)</span>
    <span class="textready1">[標示為已完成]</span>
<button class="a3">刪除</button>
 </li>
  <li class="emergency">
    <span>採買本週食材</span>
     <span class="textfinish2">(已完成)</span>
    <span class="textready2">[標示為已完成]</span>
<button class="a3">刪除</button>
</li> -->
</ul>
</div>
</body>

CSS

* {
  box-sizing: border-box;

}
body{
     margin:10%;
}
div{
  display:flex;
  flex-direction:column;
 width:500px;
  padding:5px 0;
  border-radius:5px;
  background-color:rgba(90, 34, 139,0.6);
}
.a1{
  height:auto;
  background-color:rgba(241, 231, 254,0.9);
}

input{
  width:300px;
   border-radius:5px;
       font-weight:bold;
        font-size:30px;
       
}
button{
  width:50px;
 cursor:pointer;
     border:black 2px solid;
      border-radius:10px;
      margin-left:20px;
       font-weight:bold;
 background-color:rgba(135, 206, 250,0.3);
 font-size:20px;

}
button:hover{
  background-color:rgba(	204, 255, 0,0.3);
}
button:active{
    transform: scale(0.7);
}
p{
  display:flex;
  justify-content:center;
   font-weight:bold;
}
li{
  width:400px;
   margin-left:20px;
   margin-bottom:20px;
 
  padding-bottom:20px;
  padding-top:10px;
  list-style:none;
   border-radius:10px;
   background-color:rgba(135, 206, 250,0.3);
     font-size:25px;
   }
span{
  font-weight:bold;
  margin-left:10px;
  text-wrap:wrap;
}
.title{
  font-size:36px;
letter-spacing:40px;
 color:rgb(0, 191, 255);
}
.a3{
  display:flex;
  width:auto;
  margin-left:85%;
  margin-top:-5%;
}

.output{
 width:100px;
 margin-left:350px;
 margin-right:50px;
 margin-top:-33px;
}
.storage{
  width:100px;
  margin-left:12%;
  margin-top:5%;
} 
.selectstyle{
   background-color:rgba(135, 206, 250,0.3);
 font-size:24px;
 width:80px;
       font-weight:bold;
         border-radius:10px;
         border:2px solid black;
         
         margin-left:65px;
}
.normal{
  color:red;
}

.important{
  color:green;
}
.emergency{
  color:yellow;
}
.textnormal{
  color:blue;
}
.textimportant{
 color:orange;
}
.textemergency{
  color:red;
}
.textfinish{
  font-size:20px;
  display:none;
}
.textready{
  font-size:20px;
 display:flex;
 justify-content:end;
 margin-right:20%;
 ...

JavaScript

let button = document.querySelector('.Q1');
console.log(button)
button.onclick = add;
// 新增 文字
function add(){ 
let input = document.querySelector('#textinput');
let k1 = document.querySelector('.a2');
let k2 = document.createElement('li');
let k3 = document.createElement('span');
let k4 = document.createElement('button');
// 2-6 新增2個文字
let k5 = document.createElement('span');
let k6 = document.createElement('span');


let selectlevel = document.querySelector('.selectstyle');
let selectlevelindex = selectlevel.selectedIndex;
let selectvalue = selectlevel.options[selectlevelindex].value;
if (input.value != '' && selectvalue != '' ){ 
k1.append(k2);
k2.append(k3);
// 2-6 新增2個文字
k2.append(k5);
k2.append(k6);

k2.append(k4);
k4.className = 'a3';
k4.textContent = '刪除';
k3.textContent = input.value;
k3.className = selectvalue;
//新增 固定文字 及 class 在文字上
k5.textContent ='(已完成)';
k6.textContent ='[標示為已完成]';
k5.className = selectvalue;
k6.className = selectvalue;
k5.classList.add('textfinish');
k6.classList.add('textready');
// 新增開關
k6.onclick = done;
function done(){
if( k5.style.display === 'none'){
  k5.style.display = 'inline';
 k6.textContent = '[標示為未完成]';
 }else{
 k5.style.display = 'none';
  k6.textContent = '[標示為已完成]';
 }
}
input.value = '';
k4.onclick = remove;
selectlevel.value = '';
input.className = '';
}else{
alert('請填寫內容及等級')
} 
}


// 刪除 原本
let deletbtn = document.querySelectorAll('.a3');
for (delet of deletbtn ) {
delet.onclick = remove;
} 
// 刪除鎖定的父元素
function remove(){
event.target.closest('li').remove();
}
let output = document.querySelector('.output');
output.onclick = outputtext;
 function outputtext(){
 let notetext = document.querySelectorAll('li');
  let num = 1 ;
 let text = '' ;
 for (let i of notetext){
 let getclassname = i.querySelector('span').className;
if( i.className == 'normal' || getclassname == 'normal' ){
text = text + num.toString() + '.'...