javascript——記憶小便簽

來源:互聯網
上載者:User

標籤:set   htm   app   -o   alert   auto   move   屬性   line   

這是一個小小的網頁記憶便簽,長這個樣子。

一、怎麼用

可以用它來記錄自己的待辦事項,首先在工作列輸入要添加的事項名稱,點擊添加事項就會自動加入待辦列表裡。

然後在事件列表裡。可以對該事件進行操作,如果已經完成了這件事,點擊事件名,事件就會被劃掉(再次點擊取消劃線)。點擊事件右側的小叉,這個事件就會被完全刪掉。

 

二、如果實現HTML結構:
<div id="todoList">   <div class="todoList-header">     <h2>待辦事項</h2>     <div class="todoList-operation">       <input type="text" id="add-task-input" placeholder="任務名稱">       <button id="js-add-task" type="button">新增工作</button>     </div>   </div>   <ul class="todoList-content">     <li class="task checked">       <p class="text">觀看《我不是藥神》</p>       <span class="close">x</span>     </li>     <li class="task">       <p>準備工作彙報資料</p>       <span class="close">x</span>     </li>     <li class="task">       <p>背十個英文單詞</p>       <span class="close">x</span>     </li>     <li class="task">       <p>三組腹肌撕裂者訓練</p>       <span class="close">x</span>     </li>   </ul> </div>

 

CSS:
* {    box-sizing: border-box;}ul, li, p{    margin: 0;    padding: 0;    list-style: none;}#todoList {    width: 80%;    max-width: 460px;    margin: 20px auto;}.todoList-header {    background-color: #c7eb62;    padding: 10px 30px 30px;    color: #434343;    text-align: center;}.todoList-operation {    position: relative;    padding-right: 110px;}.todoList-header input {    width: 100%;    padding: 10px;    font-size: 16px;    vertical-align: middle;}.todoList-header button {    position: absolute;    right: 0;    top: 0;    width: 110px;    border: none;    background: #d9d9d9;    text-align: center;    font-size: 16px;    padding: 10px;}.todoList-header button:hover {    background-color: #bbb;}.todoList-content  li {    cursor: pointer;    position: relative;    padding: 12px 8px 12px 50px;    background: #eee;    font-size: 18px;    transition: 0.2s;}.todoList-content li:hover {    background: #ddd;}.todoList-content li.checked {    text-decoration: line-through;}.todoList-content li.checked::before {    content: ‘‘;    position: absolute;    border-color: #0eb312;    border-style: solid;    border-width: 0 4px 4px 0;    top: 10px;    left: 16px;    transform: rotate(45deg);    height: 16px;    width: 7px;}.todoList-content .close {    position: absolute;    color: #000;    right: 0;    top: 0;    padding: 12px 15px 12px 15px;}.todoList-content .close:hover {    background-color: #f44336;    color: white;}

 

Javascript(一) 添加待辦事項

主要流程是: 點擊新增工作按鈕——將預先設定的HTML模板及輸入框裡的文字,添加進事件列表裡。最後再清空輸入框裡的文字。

        var addTask = document.getElementById(‘js-add-task‘);        var taskInput = document.getElementById(‘add-task-input‘);        var task = document.getElementsByClassName(‘task‘);        var close = document.getElementsByClassName(‘close‘);        var todolist = document.querySelector(‘.todoList-content‘);                addTask.onclick = function (){            if(taskInput.value.length > 0){                var cont = ‘<li class="task">‘ + ‘<p>‘ + taskInput.value + ‘</P>‘ + ‘<span class="close">x</span>‘;                 var elem = document.createElement(‘li‘);                var newElem = todolist.appendChild(elem);                newElem.outerHTML = cont;                taskInput.value = ‘‘;            } else {                alert(‘請輸入任務名稱‘);            }        };

 

(二)事項列表

已經處理的事項分為兩種:1、點擊添加劃線。 2、點擊取消劃線。

點擊事件項,對事件項<li>元素的class屬性進行判定如果已經被打上checked的標記,取消劃線;如果沒有,則添加check標記。

由於事件處理器裡的事件對象使用的是實際點擊對象(event.target),就會造成點擊到<li>元素的子項目,為此再額外增加一條判斷,如果是子項目(由於<span>也是<li>的子項目,所以要先確定點擊的目標是<p>),就找到它的父元素,再執行點擊事件項的判斷。

最後,判斷點擊如果是<span>,則刪掉這一條事件項。

大功告成!

 

        todolist.addEventListener(‘click‘, function(event){            switch(event.target.className){                case ‘task checked‘:                    event.target.setAttribute(‘class‘, ‘task‘);                    break;                                    case ‘task‘:                    event.target.setAttribute(‘class‘, ‘task checked‘);                    break;            }                        if(event.target.nodeName == ‘P‘){                switch(event.target.parentNode.className){                    case ‘task checked‘:                        event.target.parentNode.setAttribute(‘class‘, ‘task‘);                        break;                    case ‘task‘:                        event.target.parentNode.setAttribute(‘class‘, ‘task checked‘);                        break;                }            } else if(event.target.nodeName == ‘SPAN‘) {                this.removeChild(event.target.parentNode);            }        }, false);

 

javascript——記憶小便簽

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.