JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./index.css">
<title>Document</title>
</head>
<body>
<div id="h1Block">
<h1>TO-DO-LIST</h1>
</div>
<div id="inputBlock">
<div class="input-area">
<input type="text" id="input" placeholder="請輸入待辦事項...">
<select onchange="changeInputColor()" name="" id="priorSelect">
<option id="" value="normal">Normal</option>
<option id="important" value="important">Important</option>
<option id="urgent" value="urgent">Urgent</option>
</select>
<button onclick="inputBtn()" class="inputBtn">Submit</button>
<button onclick="exportBtn()" class="exportBtn">Export</button>
</div>
</div>
<div id="outputBlock">
<ul id="list">
</ul>
</div>
<script src="./index.js"></script>
</body>
</html>
CSS
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
background-color: darkslategray;
/* background-repeat: none; */
background-size: cover;
}
#h1Block {
color: whitesmoke;
font-size: larger;
font-family: Fantasy;
font-weight: bolder;
text-decoration: underline;
text-align: center;
}
#inputBlock {
display: flex;
justify-content: center;
align-items: center;
}
#input {
flex: 1;
font-size: 20px;
border-radius: 10px;
border: 2px solid black;
}
#input:focus{
border: 5px solid gray;
}
.redFontClass {
color: red;
}
.orangeFontClass {
color: orange;
}
.blackFontClass {
color: black;
}
.inputBtn {
border: 2px solid black;
font-size: 18px;
border-radius: 8px;
background-color: darkred;
color: white;
padding: 1px;
}
.inputBtn:hover {
border: 2px solid darkred;
cursor: pointer;
font-size: 18px;
border-radius: 8px;
background-color: white;
color: black;
padding: 1px;
}
.exportBtn {
border: 2px solid black;
font-size: 18px;
color: white;
background-color:blueviolet;
border-radius: 8px;
padding: 1px;
}
.exportBtn:hover {
cursor: pointer;
border: 2px solid blueviolet;
font-size: 18px;
color: black;
background-color:white;
border-radius: 8px;
padding: 1px;
}
#outputBlock {
width: 400px;
margin: auto;
}
#list{
/* border: 5px solid black; */
}
#list li {
list-style-type: none;
display: flex;
justify-content:flex-end;
padding: 1px;
margin: 15px;
background-color: lightblue;
border-radius: 5px;
/* border: 3px solid black; */
}
#list li span{
flex: 1px;
text-align: left;
font-size: 18px;
padding: 6px;
/* border: 1px solid black; */
}
#list button {
border-radius: 5px;
border: 0 px;
font-size: 18px;
/* border: 3px solid black; */
margin: 5px;
}
#list button:hover {
cursor:...
JavaScript
function inputBtn() {
const listText = document.getElementById("input").value;
if(listText==""){
alert("您未輸入待辦事項:(");
}else{
var list = document.getElementById("list");
var elemSpan = document.createElement('span');
var elemLi = document.createElement('li');
var elemBtn = document.createElement('button');
var doneBtn = document.createElement('button');
var statusText = document.createElement('span');
let prior = document.getElementById('priorSelect');
let index = prior.selectedIndex;
let priorText = prior.options[index].text;
elemSpan.textContent = listText;
doneBtn.textContent = 'Done';
elemBtn.textContent = "Del";
statusText.textContent = '(已完成)';
statusText.style.color = 'green';
statusText.style.display = 'none';
list.append(elemLi);
elemLi.append(elemSpan);
elemLi.append(statusText);
elemLi.append(doneBtn);
elemLi.append(elemBtn);
elemBtn.onclick = delBtn;
doneBtn.onclick = statusCheck;
if (priorText == "Important") {
elemSpan.className = 'important';
}
if (priorText == "Urgent") {
elemSpan.className = 'urgent';
}
}
}
function delBtn() {
event.target.parentElement.remove();
}
function exportBtn() {
let listText = document.getElementById('list').children;
if(listText.length==0){
alert("無清單可匯出:(");
}else{
let exportText = "待辦事項: ";
let num = 1;
for (var x of listText) {
if (x.children[0].className == 'important') {
exportText = exportText + '(' + num.toString() + ')*' + x.children[0].textContent + "* ";
} else if (x.children[0].className == 'urgent') {
exportText = exportText + '(' + num.toString() + ')**' + x.children[0].textContent + "** ";
} else {
...