js5-2

by wang_siang

HTML

<main>
        <section class="topblock">
            <div class="topleftblock">
                <button type="button" id="alert" class="iconbtn">
                    <svg stroke-width="2.2" stroke="#ffffff" fill="#ffffff" viewBox="0 0 448 512" height="24"
                        width="24">
                        <path
                            d="M224 0c-17.7 0-32 14.3-32 32V49.9C119.5 61.4 64 124.2 64 200v33.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32zm0 96h8c57.4 0 104 46.6 104 104v33.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V200c0-57.4 46.6-104 104-104h8zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z">
                        </path>
                    </svg>
                </button>
                <p>待辦事項</p>
            </div>

            <button type="button" id="store" class="iconbtn">
                <svg viewBox="0 0 380 512" height="22" width="22" stroke="#ffffff" fill="#ffffff">
                    <path
                        d="M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z">
                    </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>
       ...

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 6px;
            border-top-left-radius: 10px;
            border-top-right-radius: 10px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .topleftblock {
            display: flex;
            align-items: center;
        }

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

        .topblock .iconbtn {
            background: transparent;
            border: transparent;
            border-radius: 6px;
            cursor: pointer;
            margin: 6px;
        }

        .topblock .iconbtn: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:...

JavaScript

document.querySelector('#add').addEventListener('click', addList);
        document.querySelector('#alert').addEventListener('click', listAlert);
        document.querySelector('#borderColor').addEventListener('change', ColorChange);
        document.querySelector('#store').addEventListener('click', save);

        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 =...