iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
自我挑戰組

學習JavaScript的基礎概念系列 第 28

Day28 來製作ToDoList吧 - 1(附上Font Awesome使用教學)

  • 分享至 

  • xImage
  •  

在鐵人賽自我挑戰的最後幾天,想來製作一個todoList最為最後的結尾,會盡量註解詳細。/images/emoticon/emoticon76.gif


這次製作ToDoList流程:

  • 在Html建立好form表單
  • Add to List按鈕設置點擊觸發事件
  • 取得表單輸入的值
  • 建立todo功能,建立需要<div><p>幫它們class取名
  • 把表單填入的值放入放入innerText
  • <p>變成<div>的子元素
  • 把建立好的todo放入<section>
  • 到Font Awesome找需要的icon

先設置好HTML的form表單

CSS樣式會稍後處理

<body>
    <header>
        <h1>ToDoList</h1>
    </header>
    
    <form>
        <input type="text" value="預設做某件事">
        <input type="number" min="1" max="12" placeholder="請輸入月份" required>
        <input type="number" min="1" max="31" placeholder="請輸入日期" required>
        <button type="submit">Add to List</button>
    </form>
    <div class="sort">
        <button>Sort By Time</button>
    </div>
    <section></section>
</body>

顯示結果:
https://ithelp.ithome.com.tw/upload/images/20221012/20152070AlpV106n6J.png

處理Add to List按鈕

//選出form表單的button 
let add = document.querySelector("form button"); 
add.addEventListener("click",(e)=>{ 
    console.log(e) 
})

檢查看看點擊按鈕是否有反應,也可查看物件屬性:
https://ithelp.ithome.com.tw/upload/images/20221012/20152070UXRDjx5GPG.png

建立todo功能

如果不確定值是什麼,可以用console查看

let section = document.querySelector("section");
//先選出form表單的button
let add = document.querySelector("form button");
add.addEventListener("click",(e)=>{
    console.log(e);

    //preventDefault()防止預設事件,先預防表單送出
    e.preventDefault();

    //用.target查看現在的e是什麼
    console.log(e.target);
    //找父元素
    console.log(e.target.parentElement);
    let form = e.target.parentElement;
    //查看子元素
    console.log(form.children);

    //找出表單各個子元素,.value取得裡面輸入的值
    let todoText = form.children[0].value;
    let todoMonth = form.children[1].value;
    let todoDate = form.children[2].value;
    console.log(todoText,todoMonth,todoDate);

    //建立一個todo,需要一個<div>,文字要有<p>
    let todo = document.createElement("div");
    //給div它一個class
    todo.classList.add("todo");
    let text = document.createElement("p");
    text.classList.add("todo-text");  
    text.innerText = todoText; // 表單第一個元素的值,放入innerText
    let time = document.createElement("p");
    time.classList.add("todo-time");  
    time.innerText = todoMonth + " / " + todoDate;

    //在div裡加入子元素p
    todo.appendChild(text);
    todo.appendChild(time);

    //把建立的todo放入section
    section.appendChild(todo);
})

解釋執行結果:
https://ithelp.ithome.com.tw/upload/images/20221012/201520708dKCd4Ucpd.jpg

準備icon(Font Awesome使用教學)

Font Awesome網頁註冊後,搜尋你需要的icon,並點進icon頁面:
https://ithelp.ithome.com.tw/upload/images/20221012/20152070iFhDqwLT8M.png
等等要複製它的i標籤,例:

<i class="fa-regular fa-check"></i>

再到font-awesome - Libraries - cdnjs
選擇你想要的版本:
https://ithelp.ithome.com.tw/upload/images/20221012/20152070Pi2rtDiPl9.png

把在font-awesome - Libraries - cdnjs複製好的連結,貼在<head></head>裡面:

<head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>

再開啟CSS檔案(一定要此步驟
::before前面放的是「你複製icon的class名稱」

.你icon的class名稱::before {
   content: "\f00c"; //你Copy的Unicode
   font-family: 'Font Awesome 6 Free'; //你目前使用的版本
   font-weight: 900;
}
.你icon的class名稱:before {
   content: "\f1f8"; //你Copy的Unicode
   font-family: 'Font Awesome 6 Free'; //你目前使用的版本
   font-weight: 900;
}

這樣你複製的icon才會顯示在網頁:

//剛剛找的icon
<i class="fa-regular fa-check"></i>
<i class="fa-light fa-trash"></i>

如圖:
https://ithelp.ithome.com.tw/upload/images/20221012/20152070nmfebvsR2j.png


參考資料:

Font Awesome 5 Free 無法顯示圖示解決方法 - 桓桓鄉寇

Font Awesome

font-awesome - Libraries - cdnjs


上一篇
Day27 Callback、Promise()
下一篇
Day29 來製作ToDoList吧 - 2
系列文
學習JavaScript的基礎概念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言