JSFiddle - React, Tailwind, and code Playground
HTML
<div class="wrap">
<div class="item">
<input type="text" id="text" placeholder="請輸入事項...">
<select id="select" onchange="color();">
<option value="normal">一般</option>
<option value="important">重要</option>
<option value="urgent">緊急</option>
</select>
<a href="#" onclick="add();">新增</a>
</div>
<div class="content">
<h2>代辦事項:</h2>
<a href="#" onclick="sumbit();">匯出</a>
<hr>
</div>
<ul id="event">
</ul>
</div>
CSS
*{
list-style: none;
text-decoration: none;
padding: 0;
margin: 0;
}
.wrap{
width: 680px;
margin: auto;
background-color: #FFFDD0;
}
.item{
display: flex;
justify-content: center;
margin: 10px 0;
padding-top: 10px;
}
#text{
text-align: center;
border: solid 1px #ccc;
border-radius: 5px;
margin-right: 1px;
}
a:hover{
color:#f00;
}
#event{
text-align: center;
}
h2{
color: #f00;
}
li{
margin-top: 5px;
font-weight: bold;
position: relative;
}
.finish-btn{
color: #fff;
background-color: #f00;
padding-right: 5px;
border-radius: 10px;
border: none;
text-align: center;
padding: 0 10px;
position: absolute;
right: 50px;
top:0px;
}
li div{
display: inline-block;
color: green;
display:none;
margin-left: 10px;
}
.remove-btn{
float: right;
border: none;
color: #808080;
background-color: #FFFDD0;
padding-right: 5px;
}
button:hover{
color: #f00;
cursor: pointer;
}
h2{
text-align: center;
}
.content a{
display: block;
display: flex;
justify-content: flex-end;
padding: 5px;
}
select{
border: #ccc;
border-radius: 5px;
margin-right: 8px;
}
.normal{
color: #000;
}
.important{
color: #FF6600;
}
.urgent{
color: #f00;
}
.normal-text{
background-color: #ccc;
}
.important-text{
background-color:#ff6600
}
.urgent-text{
background-color:#f00;
}
.none-text{
background-color: #fff;
}
JavaScript
function add(){
var text=document.querySelector("#text").value;//先取得 input 表單中輸入的文字再設為變數text
if(text==""){
alert("請輸入事項");
}else{
var li=document.createElement('li'); // 設變數 li 為創造一個新元素 li
var span=document.createElement('span'); //設變數 span 為創造一個新元素 span
var removeBtn=document.createElement('button'); //設變數 removeBtn 為創造一個新元素 button
var finishBtn=document.createElement('button'); //設變數 finishBtn 為創造一個新元素 button
var finishText=document.createElement('div'); //設變數 finishText 為創造一個新元素 div
var event=document.querySelector("#event"); //取得 ul 的標籤並設為變數 event
var select=document.querySelector("#select").value //取得下拉選單的值並設為變數 select
//新增文字
span.textContent=text; //新增變數 text 的文字內容在變數 span 裡
finishBtn.textContent="標示為已完成"; //同上新增文字
removeBtn.textContent="刪除";
finishText.textContent="(已完成)";
//新增元素
event.append(li); //在 ul 標籤裡(變數event)新增子元素 li
li.append(span); //在 li 標籤裡新增變數 span 元素和之中的文字
li.append(finishText); //在 li 標籤裡新增 div 元素和之中的文字
li.append(finishBtn); //在 li 標籤裡新增 button 元素和之中的文字
li.append(removeBtn); //在 li 邊籤裡新增變數 button 元素和之中的文字
//觸發函式
removeBtn.onclick=del; // 點擊後會觸發 del 函式
finishBtn.onclick=finish; //點擊後會觸發 finish 函式
//新增 class 名稱
li.className=select; //讓 li 的 class 名稱等於 select
finishBtn.className='finish-btn'; //同上新增 class 名稱
removeBtn.className='remove-btn';
//清空欄位
var text=document.querySelector("#text"); //取得 input 表單的元素並設為變數 text
text.className="none-text"; //為了清空輸入框的顏色
text.value=""; //讓輸入窗清空
}
function del(){
li.remove(); //直接放在 add 函式裡就可以抓到變數 li
//event.target.parentElement.remove(); //為觸發事件刪除此父層也就是 li
}
}
function sumbit(){
var spans=document.querySelectorAll("#event li span"); //取得 ul > li > span的元素
var text="";
var num=1;
for(var span of spans){
if(span.closest("li").className=="urgent"){
text=text+" ("+num.toString()+') '+"**"+span.textContent+'**'+" ";
...