前提・実現したいこと
font awesomeを使ってアイコンを使っています。クリックしたらアイコンが5パターン変更するようにしたいです。
該当のソースコード
JavaScript
HTML
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <!-- Font Awesome https://fontawesome.com/start --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <!-- Bootstrap https://getbootstrap.com/docs/4.3/getting-started/introduction/ --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <title>todolist</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div class="container"> <header class="text-center text-light my-4"> <h1 class="mb-4">Todo List</h1> <form class="search"> <input type="text" class="form-control m-auto" name="search" placeholder="Search KeyWard"> </form> </header> <ul class="list-group todos mx-auto text-light"> </ul> <form class="add text-center my-4"> <label class="text-light">ADDING TASK</label> <input type="text" class="form-control m-auto" name="add" placeholder="New Text"> </form> </div> <script src="script.js"></script> </body> </html>script
const addTask = document.querySelector('.add');
const list = document.querySelector('.todos');
const createTodoList = task => {
// HTML テンプレートを生成
const html = <li class="list-group-item"> <span>${task}</span> <i class="far fa-trash-alt delete fa-pull-right "></i> <i class="fas fa-battery-empty "></i> </li>
;
list.innerHTML += html;
}
addTask.addEventListener('submit', e => {
// デフォルトのイベントを無効
e.preventDefault();
// タスクに入力した値を空白を除外して格納 const task = addTask.add.value.trim(); if(task.length) { // Todo List の HTML を作成 createTodoList(task); // タスクに入力した文字をクリア addTask.reset(); }
});
//2パターンのアイコンの切り替え可能。5パターンを作りたい。
list.addEventListener('click', e => {
if(e.target.classList.contains('fa-battery-empty')){
e.target.classList.replace('fa-battery-empty','fa-battery-quarter');
}else{
e.target.classList.replace('fa-battery-quarter','fa-battery-empty');
}
});
//削除機能
list.addEventListener('click', e => {
if(e.target.classList.contains('delete')){
e.target.parentElement.remove();
}
});
試したこと
2パターンのアイコンの切り替え可能。
list.addEventListener('click', e => {
if(e.target.classList.contains('fa-battery-empty')){
e.target.classList.replace('fa-battery-empty','fa-battery-quarter');
}else{
e.target.classList.replace('fa-battery-quarter','fa-battery-empty');
}
});
5パターンを作りたい。
2パターンのアイコンは、どっちかに切り替えれるということで今のコードで解決できるのですが、5パターンになるとarraysを使って複数分岐(if)を使って
やらんといかんとなるとこんがらがってしまって、
手詰まりになった次第です。
こちらのソースコードを参考。
https://teratail.com/questions/222969
2パターンしか出来ず、、、
補足情報(FW/ツールのバージョンなど)
全体のソースコードの参考サイト
https://qiita.com/__init__/items/d1c59c87808fc180c871
使用したいアイコン5種類
https://webllica.com/search-font-awesome-icon-by-japanese/
fa-battery-empty fas \f244 バッテリー 電池
fa-battery-full fas \f240 バッテリー 電池
fa-battery-half fas \f242 バッテリー 電池
fa-battery-quarter fas \f243 バッテリー 電池
fa-battery-three-quarters fas \f241 バッテリー 電池
回答1件
あなたの回答
tips
プレビュー