js2-7

by wang_siang

HTML

<main>
        <section class="topblock">
            <p>待辦事項</p>
            <button type="button" id="alert">
                <svg stroke-linejoin="round" stroke-linecap="round" stroke-width="2.2" stroke="#ffffff" fill="none"
                    viewBox="0 0 24 24" height="24" width="24" xmlns="http://www.w3.org/2000/svg">
                    <path d="M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z"></path>
                    <path d="M15 3v6h6"></path>
                </svg>
            </button>
        </section>
        <section class="midblock m-y">
            <div>
                <input type="text" id="textInput">
            </div>

            <select name="" id="borderColor">
                <option value="" disabled hidden selected>層級</option>
                <option value="borderGreen">一般</option>
                <option value="borderOrange">重要</option>
                <option value="borderRed">緊急</option>
            </select>

            <button type="button" id="add">+</button>
        </section>
        <section class="bottomblock m-y">
            <ul id="note">
                <li class="borderRed">
                    <div>
                        <span>倒垃圾</span>
                        <span class="undone">(已完成)</span>
                    </div>

                    <div class="btnblock">
                        <button type="button" class="doneBtn">[標示為已完成]</button>
                        <button type="button" class="deleteBtn">[刪除]</button>
                    </div>
                </li>
                <li class="borderOrange">
                    <div>
                        <span>繳電話費</span>
                        <span class="undone">(已完成)</span>
                    </div>
                    <div class="btnblock">
                        <button type="button" class="doneBtn">[標示為已完成]</button>
                        <button type="button" class="deleteBtn">[刪除]</button>
                    </div>
         ...

CSS

* {
            box-sizing: border-box;
        }

        body {
            margin: 0;
            width: 100%;
            display: flex;
            justify-content: center;

        }

        main {
            color: black;
            font-size: 18px;
            font-weight: 600;
            margin: 50px 0;
            display: flex;
            gap: 12px;
            flex-direction: column;
            border-radius: 8px;
            background-image: linear-gradient(160deg, #0093E9 0%, #7ac1ff 100%);
        }


        .m-y {
            margin: 0 40px;
        }

        .topblock {
            background: #4f4f4f85;
            padding: 10px 10px 10px 40px;
            border-top-left-radius: 10px;
            border-top-right-radius: 10px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .topblock p {
            color: rgba(255, 255, 255, 0.9);
            font-weight: 800;
            font-size: 24px;
            padding: 0;
            margin: 0;
        }

        .topblock #alert {
            background: transparent;
            border: transparent;
            border-radius: 6px;
            cursor: pointer;
            margin-top: 4px;
        }

        .topblock #alert:hover {
            opacity: 0.8;
        }

        .midblock {
            display: flex;

            justify-content: space-between;
            padding: 18px 0;
        }

        .midblock input {
            font-size: 18px;
            color: rgba(255, 255, 255, 0.9);
            height: 42px;
            border: transparent;
            padding: 0 10px;
            background: transparent;
            border: 2px solid rgb(255, 255, 255);
            border-right: transparent;
            border-top-left-radius: 12px;
            border-bottom-left-radius: 12px;
            outline: none;
        }

        input.borderRed {
            border: 2px solid rgb(255, 62, 62);
           ...

JavaScript

document.querySelector('#add').addEventListener('click', addList);
        document.querySelector('#alert').addEventListener('click', listAlert);
        document.querySelector('#borderColor').addEventListener('change', ColorChange);
        document.querySelectorAll('.deleteBtn').forEach(function (btn) {
            btn.addEventListener('click', remove);
        });
        document.querySelectorAll('.doneBtn').forEach(function (btn) {
            btn.addEventListener('click', done);
        });

        function addList() {
            const note = document.querySelector('#note');
            const textInput = document.querySelector('#textInput');
            const borderColor = document.querySelector('#borderColor');

            const deleteBtn = document.createElement('button');
            const doneBtn = document.createElement('button');
            const list = document.createElement('li');
            const lisrDiv = document.createElement('div');
            const listText = document.createElement('span');
            const listText1 = document.createElement('span');
            const listBtnBlock = document.createElement('div');


            if (textInput.value.trim() == '') {
                alert('請輸入代辦事項');
                return;
            }

            if (borderColor.value == '') {
                alert('請選取層級');
                return;
            } else {
                list.classList.add(`${borderColor.value}`)
            }

            listText.textContent = textInput.value;
            listText1.textContent = '(已完成)';
            listText1.classList.add('undone')
            listBtnBlock.classList.add('btnblock');

            deleteBtn.textContent = '[刪除]';
            deleteBtn.classList.add('deleteBtn');
            deleteBtn.onclick = remove;

            doneBtn.textContent = '[標示為已完成]';
            doneBtn.classList.add('doneBtn');
            doneBtn.onclick = done;

            note.append(list);
           ...