待辦事項清單
by dfg312546
HTML
<input id="todo" type="text" class="inputstyle" placeholder="輸入待辦事項"/>
<select id="urgencyType" onchange="inputStyle()">
<option id="selectNormal" value="normal">一般</option>
<option id="selectImportant" value="important">重要</option>
<option id="selectUrgent" value="urgent">緊急</option>
</select>
<button onclick="add()" class="buttonStyle">新增</button>
<hr>
<div class="listContainer">
<ul id="todoList">
<li id="clear">無待辦事項</li>
</ul>
</div>
<br>
<div class="displayContainer">
<button class="outputButton" onclick="output()">匯出為純文字</button>
<button onclick="saveToLocalStorage()">儲存</button>
</div>
CSS
.inputstyle{
border-radius:5px;
border-width:thin;
border-color:#000000;
padding:5px;
}
button {
border-radius:5px;
border-width:thin;
padding:3px;
margin-left:5px;
}
button:hover{
background-color:#000000;
color:#ffffff
}
.displayContainer{
display: flex;
justify-content: center;
}
.listContainer {
display: flex;
align-items: center;
justify-content: flex-start;
border:dashed;
border-color:#ffb900;
border-radius:5px;
}
li {
color:#ff8787;
}
.mission {
color:#ff8787;
font-weight:bold;
margin-right:10px;
letter-spacing: 3px;
}
.normal{}
.important{
color:orange;
}
.urgent{
color:red;
}
JavaScript
function add() {
let addTodo = document.createElement("span");
addTodo.textContent = document.querySelector("#todo").value;
addTodo.classList.add("mission")
let li = document.createElement("li");
let addDone = document.createElement("button");
addDone.textContent = "標示為已完成";
let doneText = document.createElement("span")
doneText.textContent="(已完成)"
doneText.style.display = "none"
function doneToggle () {
doneText.style.display = doneText.style.display === "none" ? "inline" : "none";
addDone.textContent = doneText.style.display === "none" ? "標示為已完成" : "標示為未完成"
};
addDone.onclick = doneToggle
let addCancel = document.createElement("button");
addCancel.textContent = "刪除"
function cancel() {event.currentTarget.parentElement.remove()};
addCancel.onclick = cancel
let list = document.querySelector("#todoList")
li.append(addTodo)
li.append(doneText)
li.append(addDone)
li.append(addCancel)
list.append(li)
let selectElement = document.querySelector('#urgencyType');
let selectedValue = selectElement.value;
li.classList.add(selectedValue);
addTodo.classList.add(selectedValue);
document.querySelector("#todo").value = ""
if (document.querySelector("#clear")) {document.querySelector("#clear").remove();}
}
function output() {
let outputTodo = document.querySelectorAll(".mission");
let outputText = "";
outputTodo.forEach((todo, index) => {
if (todo.classList.contains("normal")) {
outputText += (index + 1) + ". " + todo.textContent + " ";
} else if (todo.classList.contains("important")) {
outputText += (index + 1) + ". " + "*" + todo.textContent + "*" + " ";
} else if (todo.classList.contains("urgent")) {
outputText += (index + 1) + ". " + "**" + todo.textContent + "**" + " ";
}
});
alert(outputText);
}
function inputStyle () {
if (document.getElementById('urgencyType').value=="important") {
document.getElementById("todo").style.color = "orange"
}
...