Add | Delete | Filter with Javascript
<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">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<title>Item Lister</title>
</head>
<body>
<header id="main-header" class="bg-success text-white p-4 mb-3">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 id="header-title">Item Lister</h1>
</div>
<div class="col-md-6 align-self-center">
<input type="text" class="form-control" id="filter" placeholder="Search Items...">
</div>
</div>
</div>
</header>
<div class="container">
<div id="main" class="card card-body">
<h2 class="title">Add Items</h2>
<form id="addForm" class="form-inline mb-3">
<input type="text" class="form-control mr-2" id="item">
<input type="submit" class="btn btn-dark" value="Submit">
</form>
<h2 class="title">Items</h2>
<ul id="items" class="list-group">
<li class="list-group-item">Item 1 <button class="btn btn-danger btn-sm float-right delete">X</button></li>
<li class="list-group-item">Item 2 <button class="btn btn-danger btn-sm float-right delete">X</button></li>
<li class="list-group-item">Item 3 <button class="btn btn-danger btn-sm float-right delete">X</button></li>
<li class="list-group-item">Item 4 <button class="btn btn-danger btn-sm float-right delete">X</button></li>
</ul>
</div>
</div>
</body>
<!--//////////////////////////////////////////////////////////-->
<!--JAVASCRIPT BELOW-->
<!--//////////////////////////////////////////////////////////-->
<script>
//-------Variables for Buttons [id of 'addForm', 'items']-------
var form = document.getElementById('addForm'); // - Var Button
var itemList = document.getElementById('items');// var list area
form.addEventListener('submit', addItem); // listen for submit button
//---------Function for Add Buttons-----------
function addItem(e){ // add button functionality
e.preventDefault(); // reset button to original
var item = document.getElementById('item').value;//record user input
var li = document.createElement('li');//create <li></li>
li.className = 'list-group-item';// add class to li
li.appendChild(document.createTextNode(item));//LI & Text together
//---------Create Delete button-----------
var btnDelete = document.createElement('button');
//add class to button
btnDelete.className = 'btn btn-danger btn-sm float-right delete';
//mix btn to text
btnDelete.appendChild(document.createTextNode('X'));
//mix li to btn
li.appendChild(btnDelete);
itemList.appendChild(li);// add everything from li to itemlist
}
//---------Remove Item with Button-----------
//addEventListener
itemList.addEventListener('click', removeItem);
//function removeItem using e.target classList contains
function removeItem(e){
if(e.target.classList.contains('delete')){
if(confirm('Are you sure?')){
var li = e.target.parentElement;
itemList.removeChild(li);
}
}
}
//---------Filter Button [id of 'filter']-----------
var filter = document.getElementById('filter');
filter.addEventListener('keyup', filterItems);
function filterItems(e){
var text = e.target.value.toLowerCase();
var items = itemList.getElementsByTagName('li');
Array.from(items).forEach(function(item){
var itemName = item.firstChild.textContent;
if(itemName.toLowerCase().indexOf(text) != -1){
item.style.display = 'block';
} else {
item.style.display = 'none';
}
});
}
</script>