Creates a to-do list with customizable priority levels
HTML
<div id="test">
<label for="add">項目:
<input type="text" id="add" placeholder="請輸入你要新增的事項">
</label>
<br>
<button type="submit" onclick ="add()">新增</button>
<button type="submit" onclick="changWord()">轉為純文字</button>
<select id="selectLevel">
<option value="normal">一般</option>
<option value="important">重要</option>
<option value="urgent">緊急</option>
</select>
</div>
<br><br>
<div id="app">
</div>
CSS
* {
font-size: 30px;
font-weight: 700;
box-sizing: border-box;
}
#test {
border: 5px solid #4CAF50;
border-radius: 12px;
padding: 20px;
width: 800px;
margin: 0 auto;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
#app {
margin: 0 auto ;
width: 800px;
padding: 20px;
}
li {
display: flex; /* 啟用 flexbox 讓項目內的內容有彈性 */
justify-content: space-between; /* 讓文字和按鈕兩邊對齊 */
align-items: center; /* 讓內容垂直置中 */
padding: 10px;
border-bottom: 1px solid #ddd;
}
.deleButton {
font-size: 20px;
margin-right: 0;
}
.importantitem {
background-color: orange;
}
.urgentitem {
background-color: rgb(216, 74, 74);
}
JavaScript
const addAll = [];
const addAllLevels = [];
function add() {
let addthing = document.getElementById('add').value.trim();
if (addthing === '') {
alert('請輸入項目。');
return;
}
let level = document.getElementById('selectLevel').value;
//取出select的值 加入陣列 用於 純文字 輸出判斷
let li = document.createElement('li')
//建立li元素
let span = document.createElement('span');
span.textContent = addthing;
//建立span元素
let button = document.createElement('button');
//建立刪除按鈕元素
button.textContent = '刪除';
button.className = 'deleButton';
// button.style.marginLeft = '20px';
// button.style.fontSize = '20px';
button.onclick = function() {
li.remove();
}
if (selectLevel.value ==='normal') {
span.className = 'normalitem';
}else if (selectLevel.value ==='important') {
span.className = 'importantitem'
}else if (selectLevel.value ==='urgent') {
span.className = 'urgentitem'
}
li.append(span);
li.append(button);
let app = document.getElementById('app');
app.append(li)
addAll.push(addthing);
addAllLevels.push(level);
document.getElementById('add').value = '';
}
function changWord() {
let printWord = "待辦事項清單:\n";
let countTime = 1;
for (let i = 0; i < addAll.length; i++) {
let item = addAll[i];
let level = addAllLevels[i];
if (level === 'urgent') {
printWord += countTime + '. * ' + item + ' *\n';
} else {
printWord += countTime + '. ' + item + '\n';
}
countTime += 1;
}
alert(printWord);
}